1

在解析 utf8 和 xml 文件中的文本时,我多次遇到问题。它放置一个领先的“?” 在我解析的第一条数据上。

这是 XML:

<dictionary>
  <word id="1" level="1" simp="爱" trad="愛">
    <pinyin>ai4</pinyin>
    <part>verb</part>
    <definition>to love</definition>
  </word>

这是 SAX:

@Override
    public void startElement(String namespaceURI, String localName,
                String qName, Attributes atts) throws SAXException {
        if (localName.equals("word")) {
            word = new Word();
            word.setId(atts.getValue("id"));

当它拉出第一个 id 时,它会拉出“?1”而不是“1”,但它不会对之后的任何数据执行此操作。它抛出的异常是:

04-30 21:42:42.240:E/AndroidRuntime(1418):原因:java.lang.NumberFormatException:无法将“?1”解析为整数

我没有看到“?” 当我物理打开 XML 文件时,它是从哪里来的?为什么它只影响第一件事?

4

3 回答 3

0

之前有什么吗?即使它不是问号,它也可能是一个不受支持的字符,正在被问号替换

于 2012-04-30T14:08:11.757 回答
0

我的猜测是你有一个编码问题。您的输入文件是否有声明

<?xml version="1.0" encoding="UTF-8" ?>

如果您没有编码,那么任何事情都可能发生。

您是否创建了这些文件并在所有文件上设置了编码?因为否则某些工具可能会破坏编码。特别是剪切和粘贴或某些文本编辑工具。

于 2012-04-30T14:08:36.543 回答
0

也许问题在于1根据 NCName 定义(http://www.w3.org/TR/1999/REC-xml-names-19990114/#NT-NCName),这不是 XML 中的有效标识符。

NCName ::= (Letter | '_') (NCNameChar)*

于 2012-04-30T14:14:49.307 回答