
3 智能手机平台的XML 数据处理机制
各种智能手机平台处理XML 的方式有2种,1个是通过本系统内置的API,另外就是通过第三方软件包。
系统内置的API 对于不同智能手机系统来说有差异,但基本上可以分为2大类。一个是基于事件的Simple API for XML(SAX),其特点是解析器速度快,占用内存小,这对于早期性能较低的智能手机或者待解析的XML数据容量大于手机内存等情形非常合适。其基本原理是,解析器(Parser)分析XML 文档时,每当遇到XML 文档中的起始元素、结束元素标记(例如以下XML 文档中的<title>、</title>等)时,会分别调用解析器的回调函数startElement及 endElement(此处以Android 为例,不同智能手机平台回调函数名会有不同),另外一个回调函数characters 用于处理两个标记之间的数据。
智能手机系统另外一个处理XML 文档的模型为 Document Object Model(DOM),它将XML 文档中每个起始、结束标记及其中的数据看成一个节点(Node,例如以上XML文档中的<title>Objective-C2.0程序设计</title>)。而节点中可以有子节点(例如item 节点中的title节点),这样整个XML 文档就是一个节点列表(或节点树)。而API 中就有处理节点数据的方法。DOM 模型使用方便,缺点是当数据量大时,对内存的要求高。
除了内置的API 外,一些智能手机系统还可以通过第三方软件包处理XML 格式的数据。比较著名的有C/C++ 的gSOAP 、Java 平台的 kSOAP,它们的实现基本相同,用法也大同小异,只是用在不同的编程语言环境下。另外,iOS 平台的APXML、TouchXML 等以DOM 模型处理XML 数据。
下表列出主流智能手机平台对各种XML 处理模型的支持程度。
表2 各种智能手机系统SAX方式处理XML的类及回调函数


|