系统是从
SAXParserFactory
产生
parser
的实例开始的。一个
parser
中包含了一个
SAXReader
对象,当这个
parser
调用
parse
方法的时候,这个
reader
就调用回调方法已实现这个应用;而这些方法呢?是定义在
ContentHandler
,
ErrorHandler
,
DTDHandler
和
EntityResolver
接口中的。
以下是对
SAX API
库的概述:
l
SAXParserFactory
SAXParserFactory
是一个根据系统属性生成
parser
实例的一个对象。
l
SAXParser
SAXParser
是一个定义了不同种类的
parser()
方法的接口。一般而言,你向
parser
传
XML
数据后,使用
DefaultHandler
再来处理,系统就会调用一些合适的方法来处理
XML
文件,这样的一种处理方法是最为简单的。
l
SAXReader
SAXParser
包含了一个
SAXReader
,通常你是不需要关心它的,但是当你要使用
SAXReader
的
getXMLReader()
方法的时候,你就需要配置他。简言之,
SAXParser
就是一个与
SAX
事件通讯的处理器,这样,你就可以使用自定义的
handler
。
l
DefaultHandler
DefaultHandler
实现了
ContentHandler, ErrorHandler, DTDHandler,
和
EntityResolver
接口
(
当然其中有一些
null
方法
),
如果你感兴趣的话,你可以在你的程序中重载它。
l
ContentHandler
当读到
XML
的
tag
时,就会调用到这个接口中的
startDocument, endDocument, startElement,
和
endElement
方法。同时,这个接口还定义了
characters
和
processingInstruction,
方法,分别地,当
parser
遇到
XML
的
element
或者
inline processing instruction
的时候调用。
l
ErrorHandler
当遇到不同类型的错误的时候分别调用相应的
"
错误
"
方法,这些方法包括:
error
,
fatalError
和
warning
。
l
DTDHandler
该接口所定义的方法只用在处理
DTD
信息的时候。
l
EntityResolver
给接口中的
resolveEntity
方法只在
parser
遇到
URI
标识数据的时候才调用。