解析包含字符引用的xml

时间:2010-04-14 09:25:16

标签: xml sax

尝试解析的XML包含CDATA内部的控制字符0x2。我试图用字符引用替换它,导致CDATA看起来像:

CDATA section----charcter reference----CDATA section

现在,如果我尝试解析它,我会收到一条错误消息: org.xml.sax.SAXParseException:prolog中不允许使用内容。

原始的xml看起来像:

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD&#2;EFGH]]></CELL>

我将其修改为:

<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD]]>&#2;<![CDATA[EFGH]]></CELL>

1 个答案:

答案 0 :(得分:0)

在CDATA部分中未解析实体定义,这就是原始示例不起作用的原因。在我看来,修改后的示例不起作用似乎是SAX解析器错误。也许SAX解析器在以&lt;?开头的XML prolog之前不允许不可见的字节顺序标记(BOM),但是SAX解析器应该。

为了帮助SAX解析器,最终会采用以下解决方法。即在您提供解析器之前使用BOM。您可以为此目的使用可标记的流,即标记流,读取BOM,如果没有BOM,则将流重置为其标记。我没试过,只是一个猜测。

顺便说一句:如果您要在介绍中修正拼写错误,您的问题会更好:写“字符引用”而不是“字符引用”。我首先想到的是,缺少的a与你的问题有关。