Простой XML вопрос - PullRequest
       14

Простой XML вопрос

0 голосов
/ 27 апреля 2009

Я создаю XML во время выполнения, его схема похожа на

<Item>
    <Content>Hi</Content>
</item>

Проблема в том, что я пытаюсь сохранить некоторое HTML-содержимое в этот тег

<Item>
    <Content><strong>Hi<strong></Content>
</item>

Как решить эту проблему

Заранее спасибо

Ответы [ 5 ]

2 голосов
/ 27 апреля 2009

Я предполагаю, что у вас есть схема, которая позволяет элементу Item содержать элемент Content и что элемент Content может содержать только текст, CDATA или аналогичный. У вас есть два варианта в этом случае.

Во-первых, вы можете как-нибудь избежать html. Либо вы можете использовать раздел CDATA, как Фредрик предложил выше. Кроме того, вы можете избежать брекетинга, как указано выше. Оба этих решения позволят вам продолжать обрабатывать содержимое Контента как текст. Это позволяет вам иметь простую модель содержимого для вашего элемента.

Кроме того, вы можете расширить свою схему, чтобы разрешить элементы xhtml как часть элемента Content. Я предложил путь к этому здесь . Конечно, если ваш контент html, а не xhtml, это не сработает.

Действительно, выбор зависит от того, хотите ли вы анализировать встроенный HTML как часть вашего XML или нет. Если вы хотите, чтобы это был текст, избегайте его. Если вы хотите, чтобы он был анализируемым, расширьте свою схему.

2 голосов
/ 27 апреля 2009

Правильный ответ - не вставлять теги в XML. XML должен определять только данные, парсер должен поместить их в правильную разметку, например все элементы-> Содержание в <strong></strong>.

Другим решением является экранирование тегов с использованием экранирования XML: &lt; и &gt;.

1 голос
/ 27 апреля 2009

Вы можете встроить содержимое HTML в раздел CDATA:

<Item><![CDATA[  <Content><strong>Hi</strong></Content> ]]></item>
0 голосов
/ 27 апреля 2009

Меньше тега (<) необходимо экранировать с помощью & lt; и то же самое для тега> (& gt;)

0 голосов
/ 27 апреля 2009

Строка HTML должна быть правильно экранирована перед добавлением ее в xml. Если вы используете .NET, здесь есть несколько способов сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...