background image

SAX 解析器

1、 android 中有哪几种解析 xml 的类,官方推荐哪种?以及它们的原理和

区别?Sax

 

解析器 SAX,全称 Simple API for XML,既是指一种接口,也是

指一个软件包

 SAX 的工作原理简单地说就是对文档进行顺序扫描,当扫描

到文档(document)开始与结束、元素(element)开始与结束、文档
(document)结束等地方时通知事件处理函数,由事件处理函数做相应动作,
然后继续同样的扫描,直至文档结束。
dom

 

解析器 DOM 是 Document Object Model 的缩写,即文档对象模型。

W3C 已于 2000 年 11 月 13 日推出了 DOM level 2 规范。DOM 是 HTML 和
XML 文档的编程接口规范,它与平台和语言是无关的,因而可以用各种语
言和在各种平台上实现。该模型定义了 HTML 和 XML 文件在内存中文档结
构,提供了对 HTML 和 XML 文件的访问、存取方法。利用 DOM 规范,可
以实现 DOM 文档和 XML 之间的相互转换,对相应 DOM 文档的内容进行遍
历或其他操作。如果要自由的操纵 XML 文件,就要用到 DOM 规范。DOM
的原理简单的说,就是通过解析 XML 文档,为 XML 文档在逻辑上建立一
个树模型,树的节点是一个个对象。我们通过存取这些对象就能够操作
XML 文档中的内容了。

2、DTDHandler 接口

DTDHandler 用于接收基本的 DTD 相关事件的通知。该接口位于 org.xml.sax 包中。
此接口仅包括

DTD 事件的注释和未解析的实体声明部分 。SAX 解析器可按任何顺序

报告这些事件,而不管声明注释和未解析实体时所采用的顺序;但是,必须在文档处
理程序的

startDocument()事件之后,在第一个 startElement()事件之前报告所有

DTD 事件。

void startDocumevoid  notationDecl(String name, String publicId, String 

systemId) 

void  unparsedEntityDecl(String name, String publicId, String systemId, 
String notationName) 

3、sax 的简介

sax,的全称 simple API for XML 即是指一种接口,也是指一个软件包,SAX 最初是

David Megginson 采用 Java 语言开发,之后 SAX 很快在 Java 开发者中流行起来。

San 现在负责管理其原始 API 的开发工作,这是一种公开的、开放源代码软件。不同
于其他大多数

XML 标准的是,SAX 没有语言开发商必须遵守的标准 SAX 参考版本。

因此,

SAX 的不同实现可能采用区别很大的接口。作为接口,SAX 是事件驱动型 XML

解析的一个标准接口(

standard interface)不会改变,已被 OASIS(Organization 

for the Advancement of Structured Information Standards)所采纳。作为软
件包,

4、 SAX 的原理