XML教程适用于iOS:如何选择最佳的XML性能解析器为您的iPhone项
有很多选择,当谈到关于iPhone的XML解析。iPhone SDK中配有两个不同的库可供选择,并有可用的几种流行的第三方库,例如TBXML,TouchXML,KissXML,TinyXML的,和GDataXML。如何为开发人员选择最佳的XML解析器为他们的项目? 我最近已经采取了看看各个选项在那里,并最终延长苹果的XMLPerformance样品试用上述各图书馆,了解他们是如何工作的,并比较它们的性能。我想我会分享我所学到迄今他人谁可能是为寻找他们的iPhone项目的最佳XML库。 在这个XML教程中,我们将给予的功能和最流行的iPhone图书馆性能的详细比较,解释如何在它们之间进行选择,并给予说明如何使用上述各库来读取XML数据的示例项目。 SAX与DOM在我们开始之前,我想确保每个人都意识到XML解析器之间最重要的区别:解析器是否是一个SAX或DOM解析器。
好了,现在让我们讨论一些库! 最流行的XML解析器的iPhone在我的研究,这里就是在我看来是最流行的XML解析器的iPhone,而且每一个简要说明:
好了,现在让我们开始比较所有这些库! XML解析器的性能比较应用
苹果已经取得了被称为XMLPerformance一个极好的代码示例,可以让你比较它需要解析包含有两个NSXML和libxml2的API的前300名iTunes的歌曲?900KB的XML文档的时间。 该示例允许您选择一个分析方法,然后解析文档,并将其保存在了多长时间下载的文件,并解析该文件在数据库中的统计数据。那么你可以去统计屏幕上看到的平均下载和解析时间为每个方法。 我想这将是测试出如何将这些不同的API对对方进行一种理想的方式,所以我扩展了样本,以包括上述所有库。如果你想尝试一下您的设备上,你可以下载下面的更新项目。它也可作为如何使用上述每个API的一个很好的例子! 下载更新XMLPerformance项目 该项目的说明:如果库包含XPath的支持,我用了一个单一的查询,因为我觉得它代表了库将在实践中的使用方式。但当然XPath是一般不是通过树手动行走速度较慢,所以把它添加到基准这些库。 所以无论如何 - 我将讨论如何使用示例我的设备上执行这里的东西写成,是结果 - 但随时给它一个镜头您的设备上,或调整的基础上,实际的XML数据,您需要将代码解析! XML解析器的性能比较下面是一些图表,显示了如何快速的各种解析器解析XML文档我的装置(iPhone 3Gs的)上: 正如你可以在这里看到,的NSXMLParser是迄今为止最慢的方法。TBXML是最快的,这是有道理的,因为很多功能被剔除,以优化分析时为只读。 我很惊讶,但是,看到TBXML和其他一些DOM解析方法进行比libxml2的SAX解析器,我原以为会是最快所有的方法更快。我没有异形,但我的猜测,为什么它是慢是因为频繁的字符串进行比较需要解析文档中的SAX方法。 然而,不打折的libxml2的SAX方法,通过看这个图。请记住,libxml2的是这些方法,可以解析文档,因为它是阅读的只有一个 - 所以它可以让你的应用程序开始显示数据的时候了,而不是让下载完成第一。 好吧,这里有一个图表,显示由解析器(这是通过通过对象分配工具运行的各种方法获得)的峰值内存使用: 请注意,DOM方法通常需要比SAX的方法(除了TBXML,这确实是相当有效率的)更多的内存开销。这一点,当你正在处理的特别大的文档来考虑,鉴于在iPhone上的内存限制。 还要注意的是libxml2的的SAX方法是最好的选择,据峰值内存使用量而言(我怀疑它会规模比别人更好的为好)。 最后,让我们换了一个图表,总结了解析器和一切我们上面已经讨论之间的差异:
* =与TinyXPath 选择哪一个?其中的XML解析器来选择实际上取决于你想要做的解析器什么。
那么那些我没有提到?
我这次调查(VTD-XML和目标,XML)的过程中,看了看另外两个XML库,但我不能让他们的工作。如果别人已经有更多的运气有了这些,随意延长示例项目,包括他们! 凡要何去何从?如果你正在寻找使用这些库中的一个一定的帮助,看看我的帖子如何读取和编写XML文档与GDataXML。 如果有任何人对这些库或提示,可以帮助其他开发人员的任何额外的反馈,请帮腔下! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |