Можем ли мы встроить CDATA в пару строк имя-значение в xml? - PullRequest
0 голосов
/ 16 марта 2020

У меня есть требование прочитать Json из конфигурации xml с парой имя-значение, которая имеет CDATA.

Моя xml структура выглядит следующим образом

<cfgsection name="test" value="<![CDATA[{Json data goes here}]]>"/>

Я бы Хотелось бы знать, может ли CDATA находиться внутри плоской строки [""], поскольку документация предполагает, что она должна находиться внутри узла / элемента?

Может ли кто-нибудь пролить свет на это?

1 Ответ

1 голос
/ 17 марта 2020

CDATA может появляться только как часть содержимого элемента, а не как часть значения атрибута. (Проще задавать вопросы и понимать ответы, если вы изучите правильную терминологию ...)

Это означает, что вы можете написать

<prop name="test"><![CDATA[{Some Json}]]></prop>

, но не можете написать

<prop name="test" value="<![CDATA[{Some Json}]]>"/>

CDATA, конечно, просто устройство для экранирования специальных символов, и есть другие способы экранирования специальных символов в атрибутах. На самом деле, если вы используете одинарные кавычки вокруг атрибута

<prop name="test" value='{"key":value, "data":[1,2,3]}'/>

, вам обычно вообще не требуется экранирование, если только в ваших данных JSON не содержится строк с "'" или "<" в них - в этом случае они могут быть записаны как XML ссылки на символы.

...