2009-06-25 11 views
0

JavaでDOM Parserを使用して、小さなXMLファイルを解析しようとしていますが、uriからネットを引き離しますが、セミコロンがないと不平を言うエラーが表示されます。org.xml.sax.SAXParseException:文字参照は ';'で終わらなければなりません。デリミタ。回避策が必要

はここでリンクが108です:

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

ここでエラーです:XML

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

のこの行を解析

[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) 

は明らかに不足しているセミコロンがあります。誰もがこの問題のための素晴らしいときちんとした回避策を知っていますか?

答えて

1

XMLをバイト配列/文字列に別々に取得し、不正なエンティティでregex replaceを実行してからパーサーに送信します。

私は正規表現のエキスパートではありませんが、&#\ d {1,4} [^;]を検索すると、その半分を行う可能性があります。

あなただけのこのエンティティは、あなたがそれよりもXML構文でより多くの問題がある場合は、より包括的なソリューションをクリーンアップするHTMLTidyまたはそのJavaのポート、JTidyを、使用することですあなたの可能性だけでString.replaceAll("&#192", "&#192;");

+0

その[0-9]の代わりに、\ dは – Duncan

0

を不正な形式している場合マークアップをパーサーに送る前にもともとはHTML/XHTMLのために設計されていましたが、適切な設定が与えられていれば、任意のXMLを整理することができます。

1

使用するJavaと

"?default=sample&amp;page=homePage" 
関連する問題