带分号的SAXException

时间:2012-03-22 16:29:58

标签: java sax

我想解析具有以下元素的xml文件:

<element>&amp</element>
<element>&amp;</element>

但是SAX Parser在解析过程中给了我以下异常:

org.xml.sax.SAXParseException: The reference to entity "amp" must end with the ';' delimiter.
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)

是否有任何已知的解决方法?

抛出异常的java代码是:

DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(file);

1 个答案:

答案 0 :(得分:1)

我无法使用您显示的XML(在编辑之前)重现这一点。简短但完整的计划:

import java.io.*;
import javax.xml.parsers.DocumentBuilderFactory;

public class Test {
    public static void main(String[] args) throws Exception {
        File file = new File("test.xml");
        DocumentBuilderFactory.newInstance()
            .newDocumentBuilder()
                .parse(file);
    }
}

文件为:

<element>&amp;</element>

...它运行时没有错误。

当文件只是:

<element>&amp</element>

...它显示您报告的相同异常。

我的结论是它是正确的,并且您的文件 已损坏。在文件中查找&amp的每一个匹配项,找到缺少分号的位置。