簡體   English   中英

xml解析錯誤錯誤由於:Parsing Error:字符引用“ ...”是無效的XML字符,因此無法進行編組失敗

[英]xml parsing error error Unmarshaling failed due to :Parsing Error : Character reference “�” is an invalid XML character

大段引用

解析器在¾Ë°Ú¾î¿°¾ó¸¶³ª°Å¸±°Í°°¾Æ¿°失敗,並顯示消息取消編組失敗,原因是:
解析錯誤:

Character reference "�" is an invalid XML character.

converted internally to �˰ھ ���� �Ÿ��Ͱ��ƿ� �� ���� �ϰ� �ִ°�? by parser while parsing 

有效地失敗於³個字符。

現在我的問題是我必須通過哪種選擇? 我嘗試將數據放在cdata節中,但仍然失敗。
我正在將舊的castor.jar和xerces.jar與無法更改的jdk 1.4一起使用。 添加更多詳細信息-大文件具有xml數據,例如¾Ë°Ú¾î¿°¾ó¸¶³ª°Å¸±°Í°°¾Æ¿°data>,現在使用sax解析器處理此文件。 在strartElement上,我們再次開始收集數據,在endElement上,我們嘗試使用以下命令解組所有數據

   Events dom = (Events) um.unmarshal(new StringReader(xmlChunk.toString()));

如您所知,此時數據將由sax解析器轉換為實體,因此有效地使我們對數據進行了編組,並以上述數字顯示。

我能夠處理同一個文件,而無需更改jdk或win7框上的代碼。 並在內部將其轉換為不同的字符實體。
在win7上處理時,相同的代碼工作正常! 而內部正在改變的角色實體是-

converted internally to ¾Ë°Ú¾î¿° ¾ó¸¶³ª °Å¸±°Í°°¾Æ¿° ³Ê Áö±Ý ÇÏ°í Àִ°Å? by parser while parsing 

現在我在這里無所適從...

所謂的實體� 是DBA3,它在Unicode代理字符范圍內。 這意味着您的輸入要么是UCS-16 / UTF-16,要么是亂碼。 如果這是UCS-16,則字符實體表示形式是無效的XML。 XML規范說:

字符:: =#x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

使用字符引用引用的字符必須與Char的產生匹配。


更改XML解析器的平台不太可能解決此問題。

我將研究用於處理輸入文本的機制(以確保您不會弄錯字符編碼)並生成字符引用。 創建后者時,您需要測試代理對“代碼單元”,並將它們組合成代碼點,然后從這些代碼點生成字符引用。


另一件事不是,如果您嘗試使用CDATA的字符引用將二進制數據嵌入到XML文檔中……。 它不會工作。 你必須二進制數據為十六進制或Base64或類似的東西轉換,並嵌入文件內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM