我收到了与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);
答案 0 :(得分:1)
难以为编码错误生成准确的行号,因为如果文件编码不正确,则检测行边界是不可靠的。我不认为使用Eclipse在调试模式下运行Xerces会对你有所帮助。
我听说过,emacs可以很好地诊断编码错误。尝试在emacs中打开文件,看看它的内容。或者,此错误的最常见原因是该文件实际上是以iso-8859-1而不是utf-8编码的;所以尝试更改XML声明并查看是否有效。