我的应用程序可以导入GPX文件(XML),然后使用出色的XML字典库,该库在解析XML和GPX方面做得非常好,但是在这种情况下,我有一个85MB的文件要尝试解析。它包含超过16,000个GPX航路点,这是巨大的。
目前,我读NSURL
入NSData
并使用解析器。但是尝试使用大文件时会收到内存警告和崩溃。
我该如何像这样对大文件的分析进行分块处理,以免出现内存错误?
您正在使用的XML词典库的问题在于,它会构建整个XML文件的庞大对象树。这会占用大量内存。
使用SAX解析器(例如标准NSXMLParser
类)要好得多。除了在解析过程中保留的任何数据结构之外,没有任何内容保留在内存中。
无论哪种情况,您都无需在解析之前将整个XML文件加载到内存中。打开到文件的流,并将该流传递给解析器。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句