SAX xml解析器缺少行号

时间:2015-02-23 21:24:18

标签: java xml saxparser

我收到了与UTF-8相关的XML解析异常,这是消息:

Invalid byte 2 of 4-byte UTF-8 sequence.
[Feb 23 13:19:01.937 PST 2015][main][SEVERE][com.accelovation.nlp.util.xml.XMLUtil$XMLDocument:<init>] SAX Exceptoin :org.xml.sax.SAXParseException;

我正在尝试调试,但它需要修改编译器选项以生成行号属性。我不能设置一个断点,Eclipse提醒我:

Unable to install breakpoint in org.apache.exerces.jaxp.DocumentBuiderImpl due to missing line number attributes. Modify compiler options to generate line number attributes.

如何修改编译器选项以生成数字?在我的Eclipse编译器选项中,我已经检查过&#34;将行号添加到生成的类文件&#34;。

添加有关如何解析XML文件的更多详细信息,其中参数是传递给此函数的File对象:

 Document document = null;

        DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance()
                                                           .newDocumentBuilder();
        if (resolver != null) {
            docBuilder.setEntityResolver(resolver);
        }
        document = docBuilder.parse(file);

1 个答案:

答案 0 :(得分:1)

难以为编码错误生成准确的行号,因为如果文件编码不正确,则检测行边界是不可靠的。我不认为使用Eclipse在调试模式下运行Xerces会对你有所帮助。

我听说过,emacs可以很好地诊断编码错误。尝试在emacs中打开文件,看看它的内容。或者,此错误的最常见原因是该文件实际上是以iso-8859-1而不是utf-8编码的;所以尝试更改XML声明并查看是否有效。