解析包含字符引用的xml
问题描述:
尝试解析的XML包含CDATA中的控制字符0x2。我试着用字符引用而导致CDATA来替代它看起来像:解析包含字符引用的xml
CDATA section----charcter reference----CDATA section
现在,如果我尝试分析它,我得到一个错误消息说: org.xml.sax.SAXParseException:内容是不允许的序言。
原始的XML看起来像:
<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCDEFGH]]></CELL>
我修改了它:
<?xml version="1.1" encoding="UTF-16"?><CELL><![CDATA[ABCD]]><![CDATA[EFGH]]></CELL>
答
实体定义不是在CDATA节中解决,这就是为什么你原来的例子不工作。在我看来,修改的例子不起作用似乎是一个SAX解析器错误。也许SAX解析器不允许在以<?开头的XML prolog之前,但SAX解析器应该有一个不可见的字节顺序标记(BOM)。
为了帮助SAX解析器进行以下解决方案,最终可以做到这一点。即在提供解析器之前消耗BOM。您可以为此使用可标记的流,即标记流,读取BOM,如果没有BOM,则将流重置为其标记。我没有尝试,只是猜测。
顺便说一句:如果您在介绍中修复错字,您的问题会被认为更好:写“字符引用”而不是“字符引用”。我首先想到,缺少的a与你的问题有关。
+0
另请参阅:http://lachy.id.au/log/2006/09/xml-prolog – 2011-01-18 22:20:34
通过编辑您的问题发布您询问的实际XML。当你这样做时,选择XML并按下文本输入区域上方的1010按钮。 – 2010-04-14 09:31:24