32

我找不到这些解析技术的比较。哪一种最常用?

问候。穆斯塔法

4

3 回答 3

58

NSXMLParser 是一个SAX解析器,这意味着它遍历 XML 文档,并(通过委托方法)通知您各种事件(例如启动 xml 节点、查找属性等)。这种类型的 XML 处理最适合解析大型文档,并且只需要从大文件中检索少量数据。

与 SAX 不同的是DOM模型,其中整个 XML 树被解析到内存中(通常只需一次调用),然后您可以从提供的 API 中自由探索 XML 文档。这通常更容易使用,因为您可以随机访问整个 xml 文档。

所以第一个应该回答的问题是 SAX 与 DOM 的问题。如果您正在处理大型 XML 文件(例如 10 MB 或更大),您可能希望坚持使用 SAX。如果您正在处理小的 XML 文件或微小的 XML 片段,则使用 DOM 通常要容易得多。

如果您确实决定使用 DOM,那么您有几个选择。

libxml2 是一个用 C 语言编写的非常强大的 API。它主要用于 DOM 样式,但如果您对它有经验,还有其他选择。但是,由于它是用 C 编写的,因此对于那些更熟悉 Objective-C(对象和自动释放)或来自 .Net 世界的人来说,它通常不具有吸引力。因此,需要/渴望一个围绕 libxml 的原生 Objective-C 包装器,以使其更加熟悉。TouchXML 就是这样一种包装器。如果您只需要对 XML 的读取权限,它就可以很好地工作。如果您想更改 XML,或从头开始创建 XML 片段/文档,我建议您使用KissXML

于 2009-01-02T20:20:24.677 回答
14

请参阅iOS 的 XML 教程:如何为您的 iPhone 项目选择最佳 XML 解析器

在 iPhone 上解析 XML 有很多选择。iPhone SDK 带有两个不同的库可供选择,并且有几个流行的第三方库可用,例如 TBXML、TouchXML、KissXML、TinyXML 和 GDataXML。开发人员如何为他们的项目选择最好的 XML 解析器?

我最近一直在查看各种选项,并最终扩展了 Apple 的 XMLPerformance 示例,以尝试上述每个库,以了解它们的工作方式并比较它们的性能。我想我应该与其他可能正在为他们的 iPhone 项目寻找最佳 XML 库的人分享我迄今为止所学到的知识。

在这个 XML 教程中,我们将详细比较最流行的 iPhone 库的特性和性能,解释如何在它们之间进行选择,并提供一个示例项目来展示如何使用上述每个库读取 XML 数据...

于 2010-07-08T12:34:50.980 回答
2

还有另一个很好的基于块的 XML 解析库 - ZaBlanc 的 RaptureXML ( github ), 它在 libxml2 之上提供了 Objective-C API,我绝对推荐尝试一下。

于 2013-02-24T14:30:41.063 回答