3.SAX
SAX,全称Simple API for XML,即是指一种接口,也是指一
个软件包。
作为接口,SAX是事件驱动型XML解析的一个标准接口(
standard interface),已被OASIS( Organization for the
Advancement of Structured Information Standards)所采纳。
作为软件包,SAX最早的开发始于1997年12月,由一些互联网
分散的程序员合作进行。后来,参与开发的程序员越来越多,组成
了互联网上的XML-DEV社区。五个月以后,1998年5月,SAX 1.0版
由XML-DEV正式发布。今年5月,XML-DEV社区又发布了最新的SAX
2.0。2.0版本在多处与1.0版本不兼容,包括一些类和方法的名字。
3.1 SAX的原理与使用
SAX的工作原理是:Parser顺序扫描文档,扫描到文档(document)
开始与结束、元素(element)开始与结束等地方时通知事
件处理函数(handler),由事件处理函数做相应动作,然后继续
同样的扫描,直至文档结束。例如,对于如下文档:
<?xml version="1.0">
<doc>
<para>Hello, world!</para>
</doc>
在解析的过程中会产生如下一系列事件:
start document
start element: doc
start element: para
characters: Hello, world!
end element: para
end element: doc
end document
很明显,这种思路和DOM截然不同。
使用SAX时,只需将精力集中在事件处理函数的编写上即可。
如果使用的是非面向对象语言,如C,则需要将程序员自行开发的
事件处理函数作为参数传递给SAX Parser。如果使用的是面向的语
言,则需要重载SAX包中原有的事件响应函数。
3.2 SAX的缺点
由于SAX在原理以及提供的接口等方面均比DOM简单,同时SAX
的概念不是OO的,所以,虽然SAX在速度、对资源的要求等方面性
能比DOM好,但SAX比DOM难用、难懂(相当难懂!需要看sample才
能大概理解如何使用,其使用方法没有DOM那么直接。作为一种面
向对象的接口,DOM的确非常容易理解和使用)。当使用SAX的XML
Parser的程序规模增大时,程序的可读性和可维护性迅速变坏。
另一方面,使用SAX,二次开发的程序员需要自行建立中间对象用
于存储文档的信息--这项工作在DOM里是由Parser程序完成的。
