gpt4 book ai didi

swift - 解析大型 XML 文件并在 Swift 中处理解析数据的良好解析器

转载 作者:行者123 更新时间:2023-11-28 15:47:27 26 4
gpt4 key购买 nike

我的问题分为两部分 - 第一部分是选择合适的 XML 解析器,第二部分是关于处理已解析数据的正确方法的问题。

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

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

更新:

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

最佳答案

如果:

  • 此数据并不总是需要更新,只是偶尔更新。

  • 核心数据可以scale effectively到大量的小条目。

然后:

  • 使用速度最快的 XMLParser 处理大型数据集。

  • 解析下载的数据,并将解析后的数据存储到核心数据中(可能为每个 XML 键:值对创建新条目)。

  • 初始下载 XML 文件后,只检查 status code在随后的访问中(304 意味着什么都没有改变)。

  • 填充表时,您可以使用 Core Data 访问各个属性,而无需将整个文件加载到内存中。

关于swift - 解析大型 XML 文件并在 Swift 中处理解析数据的良好解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42799765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com