我的应用程序可以导入GPX文件(XML),然后我使用了很棒的XML Dictionary库,它可以很好地解析XML和GPX,但是在这个例子中我有一个85MB的文件,我想尝试一下解析。它包含超过16,000个GPX航路点,这是非常大的。
目前,我将NSURL
读入NSData
,然后使用解析器。但是当我尝试使用大文件时,我会收到内存警告和崩溃。
我怎样才能解析像这样的大文件,这样我就不会出现内存错误?
答案 0 :(得分:1)
您正在使用的XML Dictionary库的问题是它构建了整个XML文件的大量对象树。这会占用大量内存。
最好使用SAX解析器,例如标准NSXMLParser
类。除了解析过程中保留的数据结构外,内存中没有任何内容。
在任何一种情况下,您都不需要在解析之前将整个XML文件加载到内存中。打开文件流并将流传递给解析器。