1. 程式人生 > >SAXParseException An invalid XML character 問題的解決

SAXParseException An invalid XML character 問題的解決

               

paip.SAXParseException An invalid XML character.txt

Caused by: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xdd65) was found in the comment.

現象大概如下

[java] view plain copy print?
  1. Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 
    0xdd65) was found in the comment.  
  2. at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:212)  
  3. at org.apache.ibatis.parsing.XPathParser.(XPathParser.java:81)  
  4. at org.apache.ibatis.builder.xml.XMLMapperBuilder.(XMLMapperBuilder.java:43)  
  5. at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:243
    )  
  6. at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:66)  
  7. ... 53 more  
  8. Caused by: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xdd65) was found in the comment.  
  9. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236
    )  
  10. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)  
  11. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)  
  12. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)  
  13. at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1438)  
  14. at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:764)  
  15. at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:771)  
  16. at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1730)  
  17. at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)  
  18. at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)  
  19. at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)  
  20. at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)  
  21. at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:250)  
  22. at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)  
  23. at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:210)  
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xdd65) was found in the comment.at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:212)at org.apache.ibatis.parsing.XPathParser.(XPathParser.java:81)at org.apache.ibatis.builder.xml.XMLMapperBuilder.(XMLMapperBuilder.java:43)at org.apache.ibatis.builder.xml.XMLConfigBuilder.mapperElement(XMLConfigBuilder.java:243)at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:66)... 53 moreCaused by: org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0xdd65) was found in the comment.at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:215)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:386)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1438)at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:764)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:771)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1730)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:250)at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:210)

-----原因JDK的XML解析相容性不好。有些XML檔案格式不太正規。。在節點中加了註釋。造成的這種問題。

----定位出錯的XML

下載MYBATIS的原始碼,附加上去除錯。定位了出錯的XML檔案。。然後把此檔案一半XML程式碼刪除,再試,直到這樣二分查詢試出出錯的節點。。

我的原因是這樣的

[xhtml] view plain copy print?
  1. <selectid="dao-t_wl_logistics_d.queryforChild"
  2.         parameterType="hashmap"resultType="flexmap">
  3.         select logistics_scheme_no ,<!-- 物流方案號 -->
  4.         node_no ,<!-- 節點號 -->
  5.         logistics_act_code ,<!-- 活動型別程式碼 -->
  6.         logistics_act_name,<!-- 活動型別名稱 -->
  7.         trnp_mode_code_21 ,  
  8.         trnp_mode_name_21,  
  9.         base_place_code,  
  10.         base_place_name ,  
  11.         delivery_place_code ,  
  12.         delivery_place_name  
  13. </select>
 <select id="dao-t_wl_logistics_d.queryforChild"  parameterType="hashmap" resultType="flexmap">  select logistics_scheme_no ,<!-- 物流方案號 -->  node_no ,<!-- 節點號 -->  logistics_act_code ,<!-- 活動型別程式碼 -->  logistics_act_name,<!-- 活動型別名稱 -->  trnp_mode_code_21 ,  trnp_mode_name_21,  base_place_code,  base_place_name ,  delivery_place_code ,  delivery_place_name</select>