iOS 平台 XML 解析类库对比概述
在 iPhone 开发中,XML 的解析有很多选择,仅 iOS SDK 就提供了 NSXMLParser 和
libxml2 两个类库,还有如 TBXML、TouchXML、KissXML、TinyXML 和 GDataXML 等第三
方类库。
解析 XML 通常有两种方式:DOM 和 SAX
DOM 解析 XML 时,读入整个 XML 文档并构建一个驻留内存的树结构(称“节点
树
”),之后就通过遍历树结构可以检索任意 XML 节点,读取它的属性和值。而起通常
情况下,可以借助
XPath,直接查询 XML 节点。
SAX 解析 XML,是基于事件通知的模式,一边读取 XML 文档一边处理,不必等
整个文档加载完之后才采取操作,当在读取解析过程中遇到需要处理的对象,会发出
通知对其进行处理。
一般在 iOS 平台下,比较常用的 XML 解析类库有如下几种:
1
NSXMLParser 这是一个 SAX 方式解析 XML 的类库,默认包含在 iOS SDK 中,
使用也比较简单。(下次专门总结学习)
2
libxml2 是一套默认包含在 iOS SDK 中的开源类库,它是基于 C 语言的 API,所
以使用起来相对不太方便,但它同时支持
DOM 和 SAX 解析,尤其是它的 SAX 解析方
式很酷,可以边读边解
析,非常适用于从网上下载一个很大的 XML 文件,可极大提
供解析效率。
3
TBXML 是一套轻量级的 DOM 方式的 XML 解析类库,有很好的性能和低内存占
用,不过它不对
XML 格式进行校验,不支持 XPath,并且只支持解析,不支持对 XML
进行修改。
4
TouchXML 这也是一套 DOM 方式的 XML 解析类库,支持 XPath,不支持 XML
的修改。
5
KissXML 这是一套基于 TouchXML 的 XML 解析类库,只不过实现了支持 XML 的
修改。
6
TinyXML 这是一套小巧的基于 C 语言的 DOM 方式进行 XML 解析的类库,支持
对
XML 的读取和修改,不直接支持 XPath,需要借助 TinyXPath 才可以支持 XPath。
7
GDataXML 它是 Google 开发的 DOM 方式 XML 解析类库,支持读取和修改 XML
文档,支持
XPath 方式查询。
以上几大类库,在读取很小的 XML 文档上,性能基本没有差别,不过从调用的方便性
来说,建议使用
TouchXML、KissXML 或 GDataXML。
如果是需要读取和修改 XML 文档,建议使用 KissXML 或 GDataXML。
如果需要读取非常大的 XML 文档,则建议使用 libxml2 或 TBXML。
不想使用第三方类库,则就使用 iOS 自带的 NSXMLParser。