iPhone开发 – XMLParser vs. libxml2与TouchXML

我无法find这些parsing技术的比较。 哪一个最常用?

问候。 穆斯塔法

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

与SAX相比, DOM模型是将整个XML树parsing到内存中(通常只需一次调用),然后您可以从提供的API中自由浏览XML文档。 随着对整个XML文档的随机访问,这通常更容易处理。

所以第一个问题应该是SAX vs DOM问题。 如果您正在处理大型XML文件(比如10 MB或更大),则可能需要使用SAX。 如果您正在处理小型XML文件或小型XML片段,那么使用DOM通常要容易得多。

如果你确实决定使用DOM,你有几个select。

libxml2是一个用C语言编写的非常强大的API。它主要用于DOM风格的使用,但是如果您有经验的话,还有其他的select。 但是,由于它是用C语言编写的,对那些更熟悉Objective-C(对象,自动释放)或者来自.Net世界的人来说并不常见。 因此,围绕libxml的本地Objective-C包装需要/渴望使其更加熟悉。 TouchXML就是这样一个包装器。 如果你只需要读取XML的话就可以。 如果你想改变XML,或从头开始创buildXML片段/文档,我build议使用KissXML 。

请参阅适用于iOS的XML教程:如何为您的iPhone项目select最佳XMLparsing器 :

当谈到在iPhone上parsingXML时,有很多select。 iPhone SDK提供了两种不同的库供select,并且有几种stream行的第三方库,如TBXML,TouchXML,KissXML,TinyXML和GDataXML。 开发人员如何为他们的项目select最好的XMLparsing器?

我最近一直在看看那里的各种选项,并最终扩展了来自苹果的XMLPerformance示例,试用上述每个库来了解它们是如何工作的,并比较它们的性能。 我以为我会分享我迄今为止学到的知识给那些可能正在为他们的iPhone项目寻找最好的XML库的人。

在这篇XML教程中,我们将详细比较最受欢迎的iPhone库的function和性能,解释如何在它们之间进行select,并给出一个示例项目,展示如何使用上述每个库来读取XML数据。

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