我正在尝试解析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弧设备!
答案 0 :(得分:1)
使用DOM树解析XML文件需要大量内存,因为解析器需要保留大量有关文件的信息。我刚才用DOM树做了一些实验,发现解析一个大小为n的文件需要7n的内存空间。
您可以尝试通过删除DOM解析器并使用SAX解析器来减少程序的内存占用。 SAX psrsers根本不同,运行时需要的内存要少得多。
答案 1 :(得分:1)
如果文档很大,那么最好尽可能使用XMLReader
,这样就不需要一次将整个文档存储在内存中。通常,这会省去我,因为你很少需要所有的xml。更频繁地,您只需要从文档中获取一些内容字符串和属性,这样可以节省大量内存。你只需要完成文档并将其删除,同时保留所有有用的东西。