使用DOM4J解析XML時非法字符Exception


       最近在做簡單的解析XML的工作,我使用的是DOM4J來解析,可以說很方便了,在加上使用XPATH來具體確定XML中特定元素下的位置,更加便捷了

       可是在使用XML解析是卻遇到了這樣的問題:

       org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x10) was found in the CDATA section.  

       解析XML文件時出現非法字符 (Unicode: 0x10) 的Exception(即使該字符位於CDATA段內)

       查閱資料得知,這個問題可以概括為An invalid XML character (Unicode: 0x**) was found in the comment. 

       問題所在是因為文件中有XML不允許的特殊字符,我覺得這也是我們俗稱的亂碼,W3C標准中有規定,有一些字符不能出現在XML文件中:

這些錯誤的發生是由於一些不可見的特殊字符的存在,而這些字符對於XMl文件來說又是非法的,所以XML解析器在解析時會發生異常,官方定義了XML的無效字符分為三段:   
0x00 - 0x08  
0x0b - 0x0c  
0x0e - 0x1f  

  最后這個問題的解決方法是:

1 對有可能出問題的XML文件,進行字符過濾后再進行解析。
2 public static String XMLChars(String s) {
3   if (s == null || "".equals(s)) {
4     return s;
5   }
6   return s.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "");
7 }

這樣這個問題就解決了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM