HTML в XML. Если я использую CDATA или кодирую HTML

Так как Ваш вопрос включает использование DevEnv из командной строки, я также предложил бы использовать MSBuild (который может создать .sln файлы без модификации).

msbuild /fl /flp:Verbosity=diagnostic Your.sln

msbuild /? покажет Вам другие полезные варианты для filelogger.

36
задан hjpotter92 11 February 2014 в 22:24
поделиться

10 ответов

Эти два варианта почти одинаковы. Вот вам два варианта:

<html>This is &lt;b&gt;bold&lt;/b&gt;</html>

<html><![CDATA[This is <b>bold</b>]]></html>

В обоих случаях вы должны проверить строку на наличие специальных символов, которые нужно экранировать. Многие люди делают вид, что строки CDATA не нуждаются в экранировании, но, как вы указываете, вы должны убедиться, что "]]>" не проскальзывает без экранирования.

В обоих случаях XML-процессор вернет ваша строка вам расшифрована.

33
ответ дан 27 November 2019 в 05:58
поделиться

Я не знаю, какой построитель XML вы используете, но PHP (на самом деле libxml) знает, как обрабатывать ]]> внутри разделов CDATA, и поэтому каждый другая структура XML. Итак, я бы использовал раздел CDATA.

1
ответ дан 27 November 2019 в 05:58
поделиться

CDATA легче читать на глаз, в то время как закодированный контент может безопасно содержать маркеры конца CDATA - но вам не о чем беспокоиться. Просто используйте библиотеку XML и не беспокойтесь об этом. Затем все, что вам нужно сказать, это «Поместите этот текст в этот элемент», и библиотека либо закодирует его, либо заключит в маркеры CDATA.

12
ответ дан 27 November 2019 в 05:58
поделиться

Лично я ненавижу сегменты CDATA, поэтому я бы использовал вместо них кодировку. Конечно, Почему я ненавижу сегменты CDATA? Если бы я знал. В основном личные предпочтения. Мне просто не нравится добавлять «запрещенные символы» в специальный сегмент, где они вдруг снова будут разрешены. Меня просто смущает, когда я вижу разметку XML в сегменте CDATA, а не часть окружающего его XML. По крайней мере, с помощью кодирования я увижу, что оно закодировано.

Хорошие библиотеки XML будут прозрачно обрабатывать как кодирование, так и сегменты CDATA. Болят только глаза.

1
ответ дан 27 November 2019 в 05:58
поделиться

Имеет смысл обернуть HTML в CDATA. Текст HTML, вероятно, будет состоять из одного значения в XML.

Таким образом, если не заключать его в CDATA, все синтаксические анализаторы XML будут читать его как часть документа XML. Хотя эту проблему легко обойти при использовании xml, почему это лишняя головная боль?

Если вы действительно хотите проанализировать HTML в DOM, тогда лучше прочитать текст HTML и настроить парсер для чтения теста отдельно.

Надеюсь, что все вышло так, как я задумал.

1
ответ дан 27 November 2019 в 05:58
поделиться

CDATA для простоты.

7
ответ дан 27 November 2019 в 05:58
поделиться

Я думаю, что ответ зависит от того, что вы планируете делать с html-контентом, а также от того, какой тип html-контента вы планируете поддерживать.

Особенно когда речь идет о включенном javascript, кодирование часто приводит к проблемам. CDATA определенно поможет вам в этом.

Если вы планируете использовать только небольшие фрагменты (например, абзац) и у вас есть способ предварительно обработать / отфильтровать его (потому что oyu в любом случае не хочет javascript или каких-то необычных вещей), вам, вероятно, будет лучше с кодированием или просто добавлением это прямо как поддерево в xml. Затем вы также можете постобработать html (то есть стиль фильтра или атрибуты onclick). Но это определенно больше работы.

0
ответ дан 27 November 2019 в 05:58
поделиться

Кодирование будет работать нормально и надежно. Вы можете без труда кодировать закодированные разделы и т. Д.

Декодирование будет выполняться автоматически любым анализатором XML, который используется для обработки закодированного HTML.

0
ответ дан 27 November 2019 в 05:58
поделиться

Вы можете использовать комбинацию обоих. Например: вы хотите передать

....

в узле xml, вы должны использовать секцию CDATA для его передачи. Содержимое внутри

...

должно быть закодировано в html-объекты, например, & lt; для <. Кодирование между тегами решит проблему]]> интерпретации, поскольку оно преобразуется в ]] & gt; , а теги html не содержат ]]> .

Вы можете сделать это только в том случае, если HTML-код создается вами самостоятельно.

0
ответ дан 27 November 2019 в 05:58
поделиться

Если ваш HTML-код в порядке -формируется, а затем просто вставлять HTML-теги без экранирования или переноса в CDTATA. Если возможно, это помогает сохранить ваш контент в XML. Это дает вам больше гибкости для преобразования и управления документом.

Вы можете установить пространство имен для HTML, чтобы можно было отделить ваши HTML-теги от других XML-тегов, обертывающих его.

Экранированный текст означает, что весь HTML-блок будет одним большим текстовым узлом. Обертка в CDATA сообщает синтаксическому анализатору XML не анализировать этот раздел. Это может быть «проще», но ограничивает ваши возможности и может использоваться только тогда, когда это необходимо; не только потому, что так удобнее. Экранированная разметка считается вредоносной.

0
ответ дан 27 November 2019 в 05:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: