libxml在iphone上分配了太多内存

时间:2010-10-27 12:00:02

标签: iphone libxml2

我的iPhone上的libxml解析器有问题!我使用PerformXMLXPathQuery来解析一个大约100'000行的xml文件。应用程序在运行PerformXMLPathQuery时中断,因为它内存不足。我能在这做什么?

谢谢,

马库斯

2 个答案:

答案 0 :(得分:3)

您可能需要查看libxml2的xmlTextReader "streaming" interface

这是一个向前移动的游标,它会丢弃它已经处理过的输入数据,并且在向前移动时不会构建一个占用大量内存的DOM。仍然可以使用XPath查询,其限制是必须为要搜索的文档部分扩展子树(即,复制到内存中的libxml结构中)。

xmlTextReader接口比在根元素上抛出一些XPath查询要繁琐得多,但对于文件大小,在内存受限的设备上,它可能是你最好的选择。

由于类似的原因,我刚刚完成了对xmlTextReader的转换,对于20KB和30MB的文档,XML处理期间使用的内存是相同的。

答案 1 :(得分:1)

您可以尝试使用NSXMLParser仅获取要保存内存使用量的数据