我的iPhone上的libxml解析器有问题!我使用PerformXMLXPathQuery来解析一个大约100'000行的xml文件。应用程序在运行PerformXMLPathQuery时中断,因为它内存不足。我能在这做什么?
谢谢,
马库斯
答案 0 :(得分:3)
您可能需要查看libxml2的xmlTextReader "streaming" interface。
这是一个向前移动的游标,它会丢弃它已经处理过的输入数据,并且在向前移动时不会构建一个占用大量内存的DOM。仍然可以使用XPath查询,其限制是必须为要搜索的文档部分扩展子树(即,复制到内存中的libxml结构中)。
xmlTextReader接口比在根元素上抛出一些XPath查询要繁琐得多,但对于文件大小,在内存受限的设备上,它可能是你最好的选择。
由于类似的原因,我刚刚完成了对xmlTextReader的转换,对于20KB和30MB的文档,XML处理期间使用的内存是相同的。
答案 1 :(得分:1)
您可以尝试使用NSXMLParser仅获取要保存内存使用量的数据