Смешивание сущностей стег вызывает исключение синтаксического анализатора XML - PullRequest
0 голосов
/ 14 февраля 2012

Я использую Java и анализатор Apache Xerces XML.Ошибка возникает внутри org.apache.xerces.parsers.DOMParser.parse.

<content id="xxx">&amp;<br /></content>

Если такая строка появляется в документе XML, который я хочу проанализировать, синтаксический анализатор аварийно завершает работу и возвращает следующее сообщение об ошибке:

org.xml.sax.SAXParseException: The entity name must immediately follow the '&' in the entity reference.

Я мог бы сузить источник проблемы до появления <br />, поскольку он хорошо работает, если я его опускаю, но не понимаю, что вызывает поломку.Амперсанд правильно экранирован и никоим образом не должен мешать появлению <br /> в качестве разделителя строк HTML.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2012

Вы должны поместить текст между тегами в CDATA:

<content id="xxx"><![CDATA[&amp; <br />]]></content>

ИЛИ напишите это так:

<content id="xxx">&amp; &lt;br /&gt;</content>
0 голосов
/ 14 февраля 2012

Вы можете поставить его под !CDATA вот так.Это сделает его не анализируемым синтаксическим анализатором XML, если это то, что вам нужно.Подробнее о разделе CDATA можно прочитать здесь .

<content id="xxx">&amp;<![CDATA[<br />]]/>

...