1
我想解析一個相當大的XML文件 - 1MB +,但我遇到了一些困難。 我首先嚐試將xml文件添加到res/xml中,並使用XmlResourceParser解析它,但我得到一個異常說「數據超出UNCOMPRESS_DATA_MAX」。經過一番研究後,我發現壓縮文件在讀取之前必須在內存中解壓縮,並且此限制不適用於原始文件。 但是試圖解析從資源xml文件/原始文件夾與SAXParser的時候,我得到一個IOException,沒有任何消息和堆棧跟蹤:解析Android中的大型XML文件
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(myXMLHandler);
InputSource src = new InputSource(stream);
xr.parse(src); // IOException
從我瞭解的內存限制並不適用於原料資源,但是什麼導致了這個異常呢?
這裏是logcat的堆棧跟蹤:
11-11 23:47:50.729: WARN/System.err(4886): java.io.IOException
11-11 23:47:50.739: WARN/System.err(4886): at android.content.res.AssetManager.readAsset(Native Method)
11-11 23:47:50.749: WARN/System.err(4886): at android.content.res.AssetManager.access$800(AssetManager.java:36)
11-11 23:47:50.759: WARN/System.err(4886): at android.content.res.AssetManager$AssetInputStream.read(AssetManager.java:542)
11-11 23:47:50.759: WARN/System.err(4886): at org.apache.harmony.xml.ExpatParser.parseFragment(ExpatParser.java:504)
11-11 23:47:50.769: WARN/System.err(4886): at org.apache.harmony.xml.ExpatParser.parseDocument(ExpatParser.java:467)
11-11 23:47:50.779: WARN/System.err(4886): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:329)
11-11 23:47:50.790: WARN/System.err(4886): at org.apache.harmony.xml.ExpatReader.parse(ExpatReader.java:286)
請寄出logcat的輸出。如果沒有至少獲得logcat錯誤級別輸出,則不可能引發異常。 – 2010-11-11 22:39:34
我複製logcat的輸出。 – Krassi 2010-11-11 22:50:35
您是否嘗試過使用XML <1MB的此方法。只是爲了排除它 – Mikpa 2010-11-14 22:24:02