none
Работа с HTML-разметкой в XML-документах при помощи LINQ RRS feed

  • Общие обсуждения

  • Приветствую!

    Есть на сайте раздел "вопрос-ответ", нужно сначала выводить список вопросов по разделам, а затем парами "вопрос-ответ". Ответ на вопрос может включать HTML-разметку, например:

    <?xml version="1.0" encoding="utf-8" ?>
    <!DOCTYPE xsl:FrequentlyAskedQuestion[
      <!ENTITY nbsp "&#160;">
      <!ENTITY ndash "&#151;">
      <!ENTITY mdash "&#150;">
    ]>
    <FrequentlyAskedQuestion>
    
      <group name="Общие вопросы">
        <item>
          <question>Как я могу узнать сколько средств осталось на моем счёте?</question>
          <answer>
            <p>Узнать остаток средств можно несколькими способами.</p>
            <p>
              <strong>Способ&nbsp;1.</strong> Отправить пустое сообщение на…
            </p>
            <p>
              <strong>Способ&nbsp;2.</strong> Позвонить на&nbsp;бесплатный номер…
            </p>
            <p>
              <strong>Способ&nbsp;3.</strong> Обратиться к&nbsp;поставщику услуги…
            </p>
          </answer>
        </item>
      </group>
    </FrequentlyAskedQuestion>

    Возможно, я неудачно выбрал формат хранения данных, но тем не менее, кто подскажет, если я начинаю обработку XML-файла с загрузки в XDocument, как мне в представлении сделать вывод HTML-синтаксиса?

    9 февраля 2016 г. 9:48

Все ответы

  • Добрый день.

    Не очень понятно в чем проблема. У вас есть элемент answer, возьмите InnerXml и запишите его в строку. Дальше вы можете делать с ним что хотите...

    10 февраля 2016 г. 11:17
    Отвечающий
  • т.е. отказаться от LINQ to XML?
    10 февраля 2016 г. 11:38
  • Зачем?

    class Program
    {
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Parse(@"<FrequentlyAskedQuestion>
    <group >
    <item>
        <question>Как я могу узнать сколько средств осталось на моем счёте?</question>
        <answer>
        <p>Узнать остаток средств можно несколькими способами.</p>
        <p>
            <strong>Способ 1.</strong> Отправить пустое сообщение на…
        </p>
        <p>
            <strong>Способ 2.</strong> Позвонить на бесплатный номер…
        </p>
        <p>
            <strong>Способ 3.</strong> Обратиться к поставщику услуги…
        </p>
        </answer>
    </item>
    </group>
    </FrequentlyAskedQuestion>");
            var answer = doc.XPathSelectElement("//answer");
            var innerXml = answer.ToString().Replace("<answer>", "").Replace("</answer>", "");
            Console.WriteLine(innerXml);
            Console.ReadLine();
        }
    }

    10 февраля 2016 г. 12:02
    Отвечающий
  • Да как бы это костыль, это во-первых, а во-вторых при сохранении в ToString теги все поменяется на hex-коды.
    10 февраля 2016 г. 12:06
  • <p>Ответ здесь</p>

    Будет выглядеть так:

    &lt;/p&gt;Ответ здесь&lt;/p&gt;

    10 февраля 2016 г. 12:31
  • А как вы отображаете эту строку? Вот так?
    10 февраля 2016 г. 12:33
    Отвечающий
  • Нет, не так. Вот сделал с помощью хелпера заработало.

    Осталось разобраться как работать со спецсимволами, их довольно много после Типографа остаётся.

    10 февраля 2016 г. 13:01
  • вариантов несколько, можно их заменять на соответствующие коды...
    10 февраля 2016 г. 13:09
    Отвечающий