我正在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)
答案 0 :(得分:1)
我有类似的例外。在我的例子中,xml已经下载并保存到SD。当我打开文件时,我看到它切掉了“中间句子”,就像它一样。看起来下载文件时出错了。删除文件并重新下载修复了此实例中的问题,但为了防止将来出现相同类型的问题,我在读取xml时检查ArrayIndexOutOfBoundsException,并假设文件在捕获时损坏了。
这显然只是目前模糊定义的问题的一种解决方案。如果我想出更多,我会更新我的答案。
答案 1 :(得分:0)
我发现Android 4.4的错误修复提到了这个:Change 61530
因此,您应该获得的正确例外是:未终止的元素内容规范,这意味着意外的EOF。
答案 2 :(得分:0)
下层(kxml)在遇到错误的xml时错误地抛出了未经检查的异常。要解决此问题,请在使用XmlPullParser时替换
try {
// use XmlPullParser
}
catch (XmlPullParserException ex) { ... }
与
try {
// use XmlPullParser
}
catch (Exception ex) { ... }