iPhone开发 - XMLParser与libxml2对比TouchXML

时间:2009-01-02 13:44:08

标签: iphone libxml2 xml-parsing touchxml

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

的问候。 穆斯塔法

3 个答案:

答案 0 :(得分:58)

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

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

所以应该回答的第一个问题是SAX vs 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

答案 1 :(得分:14)

请参阅XML Tutorial for iOS: How To Choose The Best XML Parser for Your iPhone Project

  

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

     

我最近看了各种各样的选项,最后扩展了Apple的XMLPerformance示例,试用上述每个库来了解它们的工作原理并比较它们的性能。我想我会分享到目前为止我所学到的其他人可能正在为他们的iPhone项目寻找最好的XML库。

     

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

答案 2 :(得分:2)

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