【问题标题】:Properly Terminating stream for SaxParser, avoiding "unexpected end of file" exception正确终止 SaxParser 的流,避免“意外的文件结尾”异常
【发布时间】:2011-04-20 03:54:59
【问题描述】:

我遇到了与 Android 上引用的 here 相同的问题。

给出的解决方案是使用 URI 而不是输入流。

我相信您可以按照 API 的指示使用 inputStream,但很明显,使用 parse 方法引发异常的流存在问题。我可以确认所有数据都进入了流,并且 SAXParseException 表明所有数据都进入了 parse 方法,因为我可以使用返回 -1 的 getColumnNumber 方法(表明整个流已被读取)。但看起来 parse 方法没有将其确认为流的结尾,因此引发了“意外的文件结尾”(?)

有人可以建议如何使用输入流而不是 URI 作为解析方法的输入吗?

【问题讨论】:

    标签: android xml saxparser saxparseexception


    【解决方案1】:

    我遇到了这个问题,但原因是我接受了错误编码格式的输入流。确保首先将其放入正确的编码中(可能通过将其作为 byte[] 读取并使用 String(byte[], String) 构造函数),然后尝试将其放入 SAX 解析器。

    如果您想在 Android 中解析 XML,也许您最好使用 Simple library in Android

    【讨论】:

    • “UTF8”会是最常用的设置吗?你用的是哪一个?我正在寻找 inputstreamreader 接受的字符集列表。这个链接是正确的来源吗? download.oracle.com/javase/1.4.2/docs/guide/intl/…
    • 谢谢。我添加了这样的编码, InputStream is = new ByteArrayInputStream(sData.getBytes("UTF-8"));它奏效了。但是,我确实必须省略字节流中列出的内部模式,即。 ... 因为它不断引发异常。但是一旦我直接发送 XML,一切都很好。
    • 很高兴有帮助,这是一个奇怪的问题,我认为我缺少一些东西,这使得这种情况发生。无论哪种方式,我认为在将原始数据传递给解析器之前,最好只是安全地选择编码格式。
    猜你喜欢
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 2015-11-22
    • 2011-10-04
    • 1970-01-01
    相关资源
    最近更新 更多