2010-04-14 120 views
2

嘗試解析的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[ABCD&#2;EFGH]]></CELL> 

我修改了它:

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

通過編輯您的問題發佈您詢問的實際XML。當你這樣做時,選擇XML並按下文本輸入區域上方的1010按鈕。 – 2010-04-14 09:31:24

回答

0

實體定義不是在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