2009-06-25 82 views
0

我正嘗試在Java中使用DOM解析器來解析一個小的XML文件,我從它的uri中取出了網絡,但收到錯誤,抱怨丟失了分號。org.xml.sax.SAXParseException:字符引用必須以';'結尾分隔符。需要的解決方法

這裏的鏈接108:

Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("url_to_the_xml_file.xml"); 

這裏的錯誤:

[Fatal Error] A01.xml:6:53: The character reference must end with the ';' delimiter. 
Exception in thread "main" org.xml.sax.SAXParseException: The character reference must end with the ';' delimiter. 
    at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) 
    at org.apache.xerces.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
    at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180) 
    at Parser.Parse(Parser.java:108) 
    at Parser.main(Parser.java:185) 

解析這一行XML

<title>Reduction Algorithm using the &#192 TROUS Wavelet Transform.</title> 

的顯然有一個分號失蹤。有沒有人知道這個問題的任何好的和整潔的工作?

回答

1

我會將XML單獨檢索到一個字節數組/字符串中,然後在將它發送到解析器之前對格式錯誤的實體執行正則表達式替換。

我不是一個正則表達式專家,但正在尋找一個&#\ d {1,4} [^;]可能會執行一半的技巧。

如果你只有這個實體畸形你可以只String.replaceAll("&#192", "&#192;");

+0

用java其[0-9],而不是\ d – Duncan 2009-06-25 10:55:52

0

如果您有更多的問題比XML語法,更全面的解決方案是使用HTMLTidy或它的Java接口,JTidy,清理在將它提供給解析器之前將其標記。它最初是爲HTML/XHTML設計的,但我敢肯定,如果給出正確的設置,它能夠整理任意的XML。

1

使用

"?default=sample&amp;page=homePage" 
相關問題