2012-08-15 57 views
7

我正在做android上的常規XML解析,很少我得到這個異常,只在特定的手機。一直未能找到這個問題的根源。有沒有人有一個想法可能會造成這種情況?Android的KXmlParser ArrayIndexOutOfBoundsException

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) 

回答

1

我有一個類似的異常。在我的情況下,xml已經下載並保存到SD。當我打開文件時,我發現它刪除了「中間句子」,就像它一樣。它看起來像下載文件時出現錯誤。刪除文件並重新下載解決了此問題的問題,但爲了防止將來出現相同類型的問題,我在讀取xml時檢查ArrayIndexOutOfBoundsException,並假定文件在捕獲文件時已損壞。

這顯然只是當時模糊不清的問題的解決方案。如果我瞭解更多,我會更新我的答案。

0

我發現了一個bug,修復了Android 4.4系統的提這樣的:Change 61530

所以,你應該得到適當的例外是:未結束元素含量規格,意思是意外EOF。

0

下層(kxml)在遇到錯誤的xml時不正確地拋出未經檢查的Exception。要解決此,使用XmlPullParser時,更換

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

try { 
    // use XmlPullParser 
} 
catch (Exception ex) { ... } 
相關問題