在处理XML文件时,Stax解析器遇到以下行:
<node id="281224530" lat="48.8975614" lon="8.7055191" version="8" timestamp="2015-06-07T22:47:39Z" changeset="31801740" uid="272351" user="Krte�?ek">
正如您所看到的那样,行末尾有一个奇怪的字符,当解析器到达该行时,程序停止并给出以下错误:
Exception in thread "main" javax.xml.stream.XMLStreamException: ParseError
at [row,col]:[338019,145]
Message: Ungültiges Byte 2 von 2-Byte-UTF-8-Sequenz.
at com.sun.org.apache.xerces.internal.impl.XMLStreamReaderImpl.next(Unknown
Source)
at com.example.Main.main(Main.java:46)
我是否应该在Eclipse的设置中更改以避免该错误?
更新
代码:
XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader parser = null;
try {
parser = factory.createXMLStreamReader(in);
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Log.d(TAG, "newParser",
"e/createXMLStreamReader: " + e.getMessage());
}
答案 0 :(得分:1)
它不是eclipse
,而是关于文件的编码。有两种情况:
1)文件已损坏,即它包含不正确的符号,而不是来自定义的编码
2)文件不在utf-8
编码中,并且在xml
标头中定义。因此,您应该检查,您正在正确阅读文件内容。
答案 1 :(得分:0)
使用ControlFormat
格式读取XML。
UTF8
从评论中查看文件的编码:来自reateXMLEventReader(InputStream stream, String encoding)
File file = new File("c:\\your-file.xml");
InputStream inputStream= new FileInputStream(file);
Reader reader = new InputStreamReader(inputStream,StandardCharsets.UTF_8);
答案 2 :(得分:0)
如果您在0
中编辑并保存了XML文件,那么如果eclipse
未配置为使用eclipse
,则可能会出现问题。请检查此问题:How to support UTF-8 encoding in Eclipse
否则,您可能不需要对代码执行任何操作。您只需要正确的UTF-8
编码内容。