优秀的解析器,能够解析大型XML文件,并在Swift中处理解析后的数据

优秀的解析器,能够解析大型XML文件,并在Swift中处理解析后的数据,swift,core-data,xml-parsing,ios10,Swift,Core Data,Xml Parsing,Ios10,我的问题有两个方面——第一部分是选择合适的XML解析器,第二部分是关于处理解析数据的正确方法的问题 我需要解析来自web的两个XML文件。一个文件包含~200K行,另一个文件包含~10K行。数据用于填充三个TableViewController。我一直在研究XML解析器,并阅读了几篇关于StackOverflow的文章,但我仍然不知道该选择哪一个。我的研究使我相信SWXMLHash或AEXML都适合我的情况。SWXMLHash似乎是使用延迟加载选项解析大型XML文件的好选择,但我需要使用Alam

我的问题有两个方面——第一部分是选择合适的XML解析器,第二部分是关于处理解析数据的正确方法的问题

我需要解析来自web的两个XML文件。一个文件包含~200K行,另一个文件包含~10K行。数据用于填充三个TableViewController。我一直在研究XML解析器,并阅读了几篇关于StackOverflow的文章,但我仍然不知道该选择哪一个。我的研究使我相信SWXMLHash或AEXML都适合我的情况。SWXMLHash似乎是使用延迟加载选项解析大型XML文件的好选择,但我需要使用Alamofire,因为它无法处理URL请求。但当我看Alamofire示例时,我的印象是,请求的文件作为一个整体通过回调函数调用返回。如果我理解正确,这意味着整个文件都存储在内存中。那么,如果文件已经在内存中,那么延迟加载SWXMLHash有什么意义呢?因此,我研究了AEXML示例,但似乎它甚至不是异步库,它还将数据加载到内存中。那么,我应该寻找哪个库来解析这些XML文件呢

在处理解析数据时,我想到的一种方法是将它们存储在核心数据中,并在需要填充TableViewController时查询核心数据。核心数据需要每天更新,因为服务器上的XML文件每天都在更新。如果用户没有使用今天的日期戳的数据,我将删除现有的表,下载新的XML文件,解析它们,并使用解析后的数据创建两个新表。这种方法有效/可靠吗

更新:

我对阿拉莫菲尔的看法是错误的。除了在响应变量中返回数据的方法外,它还有一个方法可以下载文件并将其存储在磁盘上。因此,在解析时,我决定结合使用SWXMLHash和AlamoFire。

如果:

这些数据并不总是需要更新,只是偶尔需要更新

核心数据可以存储到大量的小条目中

然后:

在大数据集上使用最快的XMLParser

解析下载的数据,并将解析后的数据存储到核心数据中,可能会根据XML key:value对创建新条目

初始下载XML文件后,仅在后续访问中检查304表示没有任何更改

填充表时,可以使用核心数据访问各个属性,而无需将整个文件加载到内存中


特别感谢您提到状态代码检查方法!。但是您会推荐哪种解析器呢?我在文章中提到的两个解析器似乎不适合我的需要,LIBXML2应该是原始的。然后是AQXL,我找不到好的文档,但有一点需要注意,我没有实际使用过它,从我所知道的,SWXMLParser应该适合您的需要。因为您只是偶尔通过Alamofire或URLSession加载文件,所以您在表中处理的功能数据占用的内存非常少。出于这个原因,我推荐最有用的XMLParser,乍一看,SWXMLParser就是这样。除了作为响应变量返回外,它还可以选择下载整个文件并将其存储在磁盘上。由此,我可以将数据输入到SWXMLParser中。谢谢你的建议!另外,我将把这个问题留待几个小时,看看是否有人对处理数据有兴趣。在那之后我会把你的标记为正确。