7

我在 android 上进行常规 XML 解析,很少会遇到这个异常,而且只在特定的手机上。一直没能找到这个问题的根源。有人知道可能是什么原因造成的吗?

    java.lang.ArrayIndexOutOfBoundsException: src.length=8192 srcPos=1 dst.length=8192 dstPos=0 length=-1
    at java.lang.System.arraycopy(Native Method)
    at org.kxml2.io.KXmlParser.fillBuffer(KXmlParser.java:1489)
    at org.kxml2.io.KXmlParser.skip(KXmlParser.java:1574)
    at org.kxml2.io.KXmlParser.parseStartTag(KXmlParser.java:1049)
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:369)
    at org.kxml2.io.KXmlParser.next(KXmlParser.java:310)
4

3 回答 3

1

我有一个类似的例外。就我而言,xml 已下载并保存到 SD。当我打开文件时,我看到它剪掉了“句子中间”,就像它一样。下载文件时似乎出现了错误。删除文件并重新下载解决了这种情况下的问题,但为了防止将来出现相同类型的问题,我在读取 xml 时检查 ArrayIndexOutOfBoundsException,并假设文件在捕获时已损坏。

这显然只是对目前定义模糊的问题的临时解决方案。如果我想得更多,我会更新我的答案。

于 2012-09-21T02:04:31.253 回答
0

我发现了一个针对 Android 4.4 的错误修复,其中提到了这一点:更改 61530

因此,您应该得到的正确例外是:未终止的元素内容规范,意味着意外的 EOF。

于 2014-01-13T09:40:00.627 回答
0

下层 (kxml) 在遇到错误 xml 时错误地抛出未经检查的异常。要解决此问题,在使用 XmlPullParser 时,请替换

try {
    // use XmlPullParser
}
catch (XmlPullParserException ex) { ... }

try {
    // use XmlPullParser
}
catch (Exception ex) { ... }
于 2015-05-21T00:01:41.893 回答