Как мне написать литерал "]]>" внутри раздела CDATA, не заканчивая раздел - PullRequest
10 голосов
/ 11 февраля 2009

Довольно простой вопрос, я пишу XML-документ, и я не уверен, как написать "]]>", не рассматривая его как конец раздела.

Ответы [ 3 ]

19 голосов
/ 11 февраля 2009

Вы можете сделать это так:

]]>]]&gt;<![CDATA[

В итоге раздел CDATA разбивается на две части, но это то, что вам нужно сделать.

9 голосов
/ 11 февраля 2009

Я думаю

<![CDATA[]]]]><![CDATA[>]]>

это путь.

То есть:

  • один раздел CDATA, содержащий буквенную строку ]] (<![CDATA[]]]]>)
  • один раздел CDATA, содержащий буквенную строку > (<![CDATA[>]]>)

На практике, вероятно, будет текст до первого ]] и / или после >

Подробнее на http://en.wikipedia.org/wiki/CDATA#Uses_of_CDATA_sections

5 голосов
/ 11 февраля 2009

Вы не можете. CDATA не предоставляет какой-либо способ экранирования символов, поэтому эти символы всегда будут обозначать конец раздела CDATA. Однако вы можете позволить им завершить раздел CDATA, добавить «]]&gt;» и начать новый с «<![CDATA[».

Таким образом, строка "]]>]]&gt;<![CDATA[" почти полностью экранирует "`]]> "в разделе CDATA.

...