2011-10-02 58 views
3

我想解析一個大的文件在android.The xml文件大小超過2Mb。 我使用這個代碼:解析一個大文件--OutOfMemory - Android

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = factory.newDocumentBuilder(); 
InputSource inStream = new InputSource(); 
inStream.setCharacterStream(new StringReader(XMLResponse)); 
Document doc = db.parse(inStream); 

我得到了一個內存不足錯誤,我不知道如何解決這個問題! 我正在使用Xperia arc設備!

回答

1

使用DOM樹解析XML文件需要大量內存,因爲解析器需要保留大量關於文件的信息。前段時間我對DOM樹進行了一些實驗,發現解析大小爲n的文件需要7n內存空間。

您可以嘗試通過移除DOM解析器並使用SAX解析器來減少程序的內存佔用量。 SAX psrsers有着根本性的不同,運行時需要更少的內存。

1

如果文檔很大,如果可以,最好使用XMLReader,這樣就不需要一次將整個文檔存儲在內存中。通常這會在過去節省我,因爲你很少需要所有的XML。更頻繁地,您只需從文檔中獲取一些內容字符串和屬性,並節省大量內存。您只需瀏覽文檔並將其扔出去,同時保留所有有用的內容。