background image

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。