我在iPhone上的libxml解析器出现问题!我使用PerformXMLXPathQuery来解析一个大约有100000行的xml文件。运行PerformXMLPathQuery时应用程序中断,因为它运行内存不足。我能在这里做什么?libxml在iphone上分配太多内存
感谢,
马库斯
我在iPhone上的libxml解析器出现问题!我使用PerformXMLXPathQuery来解析一个大约有100000行的xml文件。运行PerformXMLPathQuery时应用程序中断,因为它运行内存不足。我能在这里做什么?libxml在iphone上分配太多内存
感谢,
马库斯
你可能想看看的libxml2的xmlTextReader "streaming" interface。
这是一个向前移动的光标,放弃它已处理的输入数据,并且在向前移动时不会构建大型的,内存密集的DOM。仍然可以使用XPath查询,限制了子树必须被扩展(即,复制到内存中的libxml结构中)以查找要搜索的文档的某些部分。
xmlTextReader接口比在根元素处引入一些XPath查询要困难得多,但对于文档大小而言,在内存受限的设备上,这可能是您最好的选择。
由于类似的原因,我刚刚完成了对xmlTextReader的转换,并且对于20KB和30MB文档,在XML处理过程中使用的内存是相同的。
您可以尝试使用的NSXMLParser获得唯一的数据要保存内存使用
我们第一次使用NSXMLParser,但是这个解析器会降低数据量...... – Markus 2010-10-27 12:37:39
是否确定问题是内存问题? – 2010-10-27 12:39:46
我这么认为,如果我在乐器中运行它,实时字节分配会迅速上升到28.61 MB,然后突然中断!查看设备日志时,报告的类型为:低内存 – Markus 2010-10-27 12:47:23