我正在尝试使用Java中的DOM Parser来解析一个小的XML文件,我从它的uri中取出网络,但收到错误抱怨丢失分号的错误。
这是链接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 À TROUS Wavelet Transform.</title>
显然有一个分号缺失。对于这个问题,有谁知道任何干净整洁的工作?
答案 0 :(得分:1)
我会将XML单独检索为字节数组/字符串,并在将其发送到解析器之前对格式错误的实体执行正则表达式替换。
我不是正则表达式专家,但是搜索&amp;#\ d {1,4} [^;]可能会做一半的技巧。
如果您只有这个实体格式错误,那么您可以String.replaceAll("À", "À");
答案 1 :(得分:1)
使用
"?default=sample&page=homePage"
答案 2 :(得分:0)
如果您的XML语法存在更多问题,则更全面的解决方案是使用HTMLTidy或其Java端口JTidy在将标记提供给解析器之前清除标记。它最初是为HTML / XHTML设计的,但我很确定如果给出正确的设置,它能够整理任意XML。