2011-04-20 63 views
0

我遇到了与Android上引用here的问题相同的问题。为SaxParser正确终止流,避免“意外结束文件”异常

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

我相信你可以使用一个inputStream作为API指示,但显然存在引发异常与解析方法的流有问题。我可以确认所有的数据都将进入流中,SAXParseException指示所有数据都将进入解析方法,因为我可以使用返回-1的getColumnNumber方法(表示整个流已被读取)。但它看起来像分析方法不承认这是流的结束,从而引发“意外的文件结束”(?)

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

回答

1

我有这个问题,但原因是我接受错误编码格式的输入流。确保你先把它放在正确的编码中(也许通过读取它作为byte []并使用String(byte [],String)构造函数),然后尝试通过SAX解析器。

如果你想在Android中解析XML,也许你会更好的使用Simple library in Android

+0

“UTF8”是最常用的设置吗?你使用了哪一个?我正在查找inputstreamreader接受的字符集列表。这个链接是否是一个正确的来源? http://download.oracle.com/javase/1.4.2/docs/guide/intl/encoding.doc.html – giulio 2011-04-26 05:02:08

+0

Thnx。我添加了这样的编码,InputStream = new ByteArrayInputStream(sData.getBytes(“UTF-8”));它的工作。但是,我必须忽略在字节流中列出的内部模式,即。 <!DOCTYPE ....因为它一直在引发异常。但是,一旦我发送了直接的XML,这一切都很好。 – giulio 2011-04-26 06:55:22

+0

很高兴帮助,这是一个奇怪的问题,我认为有一些我失踪,使这种情况发生。无论哪种方式,我认为在将原始数据传递给解析器之前选择编码格式更安全。 – 2011-04-26 10:46:01