2010-10-27 62 views
1

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

感谢,

马库斯

回答

3

你可能想看看的libxml2的xmlTextReader "streaming" interface

这是一个向前移动的光标,放弃它已处理的输入数据,并且在向前移动时不会构建大型的,内存密集的DOM。仍然可以使用XPath查询,限制了子树必须被扩展(即,复制到内存中的libxml结构中)以查找要搜索的文档的某些部分。

xmlTextReader接口比在根元素处引入一些XPath查询要困难得多,但对于文档大小而言,在内存受限的设备上,这可能是您最好的选择。

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

1

您可以尝试使用的NSXMLParser获得唯一的数据要保存内存使用

+0

我们第一次使用NSXMLParser,但是这个解析器会降低数据量...... – Markus 2010-10-27 12:37:39

+0

是否确定问题是内存问题? – 2010-10-27 12:39:46

+0

我这么认为,如果我在乐器中运行它,实时字节分配会迅速上升到28.61 MB,然后突然中断!查看设备日志时,报告的类型为:低内存 – Markus 2010-10-27 12:47:23