iPhone开发 各种XML解析器性能对比
来源:互联网 发布:电脑重装系统后数据恢复 编辑:程序博客网 时间:2024/06/10 05:47
转自:http://www.cocoachina.com/iphonedev/sdk/2011/0223/2672.html
ML Parser 是做网络应用开发常用到的,iPhone SDK 自带了两个 libraries,除此之外还有很多第三方的 XML Parser libraries,包括 TBXML, TouchXML, KissXML, TinyXML, and GDataXML,这里就有一个问题,做开发的时候该选择哪一个适合自己的?CocoaChina 会员 “jjyycwy” 为我们做了具体介绍:
首先要清楚两个概念:SAX 和 DOM。
- SAX,Simple API for XML,属于 event driven,即所谓的事件驱动。当满足一定的条件时,相应的事件就会被驱动,常用的事件类似于ErrorOccur,DataRecieved。
- DOM,Document Object Model,简单来讲,就是要把文档完全下载完以后,然后对其里面的内容、objects等进行操作。
弄清两个概念,再来看都有哪些可以用的 Libraries。
- NSXMLParser,SAX 型,这是 iPhone SDK 自带的,用 Objective C 写的,直接用,但是并不是最简单的。
- libxml2,开源的,也是 SDK 自带的,用的是 C 语言,同时支持 SAX 和 DOM。它有一个非常好的特性,parse 和 read 同时进行,也就是说你不用等到整个文档下载完以后才读,比如你需要 parse 一个非常大的文件,你不希望用户等你 parse 完才看到内容,你可以这 parse 的同时把内容呈现出来。
- TBXML,特点是小,DOM 型,可以在低内存损耗的条件下快速提取内容,缺点也是太简单,不支持 xPath,并且只能读,不能写,也就是说,你读完了 xml,想修改里面的内容再发送,对不起,爷没这功能。
- TouchXML,特点几乎与上面那位一样,简单,只读不写,但是支持 xPath。
- KissXML,实际上是基于 TouchXML 的,只是增加了写的功能,可以编辑。
- TinyXML,是一个小的 C 语言 DOM 型,不支持 xPath。
- GDataXML,Google 开发的,基于 Objective-C 的 parser。
哪一个更好呢?
Apple 有一个叫 XMLPerformance的SampleCode,里面分别用 NSXMLParser 和 libxml2 两种方法 parse 了一个 900KB 大小的 xml 文件,300 首 iTunes 的歌。对于各种 parser 的方式,有个老美用自己的 iPhone 做了测试,结果如下图所示。
图中可以看出 SDK 自带的 NSXML 实际上是最慢的。TBXML 是最快的,当然,如前面所说,它简单,功能也少。个人觉得 libxml2 是比较好的方案,不仅同时支持 SAX 和 DOM,而且功能强大,支持 parse 和 read 同时进行,支持 xpath。当然具体问题需要具体分析。总体来讲,DOM 所占用的内存要大于 SAX,除了 TBXML,TB 是非常简单而有效率的。
- iPhone开发 各种XML解析器性能对比
- iPhone开发中的XML解析类库对比
- java解析XML性能对比
- XML各种解析方式对比 DOM SAX PULL DOM4J 解析器优劣对比
- xml解析各种类库对比
- XML各种解析方式优劣对比
- 浅谈XML 解析技术性能对比分析之 解析XML
- iPhone开发 解析xml NSData xml
- 浅谈XML 解析技术性能对比分析之 生成XML
- Iphone开发之xml解析流程小结
- iPhone开发 NSXMLParser解析xml文件
- iphone开发 NSXMLParser解析xml文件
- XML两种解析方式:SAX和DOM性能对比
- Android开发:XML解析与DOM、SAX、PULL解析对比
- XML教程适用于iOS:如何选择最佳的XML性能解析器为您的iPhone项目
- XML解析器性能测试
- 各种数据库连接池性能对比
- java各种反射性能对比
- Java报表软件定时器填报
- [矩阵幂运算] ZOJ 2974 Just Pour the Water
- 如何打印标签?如何使用易通3?
- 001test 测试程序
- iPhone开发---利用WIKI使用socket连接Internet
- iPhone开发 各种XML解析器性能对比
- 001test 测试程序
- Android开发指南1----Activity的急救术
- 读后感--敏捷软件开发:原则、模式与实践
- android:shape
- resource leakage detection on Windows
- APIDemo Service(三)
- GridView的Page_IndexChanging事件中出现回发或回调参数无效
- 读取文本记录,生成Instances,保存为arff格式