解析一个大文件--OutOfMemory - Android

时间:2011-10-02 09:31:31

标签: android xml

我正在尝试解析android中的大文件.xml文件大小超过2Mb。 我正在使用此代码:

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

我遇到了 outofmemory 错误,我不知道如何解决这个问题! 我正在研究Xperia弧设备!

2 个答案:

答案 0 :(得分:1)

使用DOM树解析XML文件需要大量内存,因为解析器需要保留大量有关文件的信息。我刚才用DOM树做了一些实验,发现解析一个大小为n的文件需要7n的内存空间。

您可以尝试通过删除DOM解析器并使用SAX解析器来减少程序的内存占用。 SAX psrsers根本不同,运行时需要的内存要少得多。

答案 1 :(得分:1)

如果文档很大,那么最好尽可能使用XMLReader,这样就不需要一次将整个文档存储在内存中。通常,这会省去我,因为你很少需要所有的xml。更频繁地,您只需要从文档中获取一些内容字符串和属性,这样可以节省大量内存。你只需要完成文档并将其删除,同时保留所有有用的东西。