2011-10-02 53 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。更频繁地,您只需从文档中获取一些内容字符串和属性,并节省大量内存。您只需浏览文档并将其扔出去,同时保留所有有用的内容。