视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
xml parser概述
2025-10-03 05:27:45 责编:小OO
文档
XML Parser 概述

XML 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 是非常简单而有效率的。下载本文

显示全文
专题