我的问题有两个方面 - 第一部分是选择适当的XML解析器,第二部分是关于处理解析数据的正确方法的问题。
我需要从Web解析两个XML文件。一个文件包含~200K行,另一个包含~10K行。该数据用于填充三个TableViewControllers。我一直在研究XML解析器,并在StackOverflow上阅读了几篇文章,但我仍然对选择哪一个感到困惑。我的研究让我相信SWXMLHash或AEXML适合我的情况。 SWXMLHash似乎是解析大型XML文件(使用延迟加载选项)的不错选择,但我需要使用Alamofire,因为它无法处理URL请求。但是当我查看Alamofire的例子时,我的印象是所请求的文件作为一个整体通过回调函数调用返回。如果我理解正确,那意味着整个文件存储在内存中。 (那么,如果文件已经在内存中,那么懒惰加载SWXMLHash是什么意思?)所以我看一下AEXML示例,但似乎它甚至不是异步库,它还将数据加载到内存中。那么我应该考虑使用哪个库来解析这些XML文件?
我在处理解析数据时考虑的一种方法是将它们存储在核心数据中,并在需要填充TableViewControllers时查询核心数据。由于服务器上的XML文件每天更新,因此核心数据需要每天更新。如果用户没有包含今天日期戳的数据,我只需删除现有表,下载新XML文件,解析它们并使用该解析数据创建两个新表。这是否有效/可靠?
更新:
我对AlamoFire错了。除了那些在响应变量中返回数据的方法之外,它还有一个下载文件并将其存储在磁盘上的方法。所以解析,我决定使用SWXMLHash和AlamoFire的组合。
答案 0 :(得分:1)
如果:
此数据并非总是有时需要更新。
核心数据可以scale effectively到非常多的小条目。
然后:
使用大型数据集中最快的XMLParser。
解析下载的数据,并将解析后的数据存储到Core Data中(可能为每个XML键创建新条目:值对)。
首次下载XML文件后,只检查后续访问时的status code(304表示没有任何更改)。
填充表格时,您可以使用Core Data访问各个属性,而无需将整个文件加载到内存中。