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 ссылки на символы.