如何解析一个巨大的XML文件,而不是耗尽内存

时间:2016-04-11 15:37:05

标签: ios objective-c xml gpx

我的应用程序可以导入GPX文件(XML),然后我使用了很棒的XML Dictionary库,它可以很好地解析XML和GPX,但是在这个例子中我有一个85MB的文件,我想尝试一下解析。它包含超过16,000个GPX航路点,这是非常大的。

目前,我将NSURL读入NSData,然后使用解析器。但是当我尝试使用大文件时,我会收到内存警告和崩溃。

我怎样才能解析像这样的大文件,这样我就不会出现内存错误?

1 个答案:

答案 0 :(得分:1)

您正在使用的XML Dictionary库的问题是它构建了整个XML文件的大量对象树。这会占用大量内存。

最好使用SAX解析器,例如标准NSXMLParser类。除了解析过程中保留的数据结构外,内存中没有任何内容。

在任何一种情况下,您都不需要在解析之前将整个XML文件加载到内存中。打开文件流并将流传递给解析器。