将实体与<br/>标签混合会导致XML解析器异常

时间:2012-02-14 15:02:51

标签: java xml exception sax xerces

我使用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 :(得分:0)

您可以将其置于!CDATA之下。如果这就是你所追求的,那么这将使它不被XML解析器解析。您可以阅读有关CDATA部分here的更多信息。

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

答案 1 :(得分:0)

您应该在CDATA中的标签之间放置文字:

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

或者以这种方式写它:

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