java - 如何避免解析奇怪的字符

标签 java xml sax stax

当我处理 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());
        }

最佳答案

这与eclipse无关,而是与文件的编码有关。有两种情况:

1) 文件已损坏,即它包含不正确的符号,而不是来自定义的编码

2) 文件不是采用 utf-8 编码,而是在 xml header 中定义。因此,您应该检查是否正确读取文件内容。

关于java - 如何避免解析奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34872522/

相关文章:

java - 我们如何在 java.util.function.Function lambda 中有 2 个参数?

java - 流音频振幅的有源阵列

java - 如何使用 JAXB 生成 CDATA block ?

javax.xml.parsers.DocumentBuilder 对复杂类型的支持

node.js - Node SOAP : "Non-whitespace before first tag."

java - 使用 ant 创建包含 JAR、库和文档的可分发 zip 文件

java - opencv 查找文本区域 block /检测文档布局

java - ListView 中的行逐行膨胀

mysql - 在将 XML 值插入 MySQL 表之前修改列

java - 当我需要 DocumentBuilder 时使用 SAX 解析器