SAX 的工作原理简单地说就是对文档进行顺序扫描,当扫描到文档( document)开
始与结束、元素(
element)开始与结束、文档(document)结束等地方时通知事
件处理函数,由事件处理函数做相应动作,然后继续同样的扫描,直至文档结束。
5、大多数 SAX 实现都会产生以下类型的事件:
A、在文档的开始和结束时触发文档处理事件。
B、在文档内每一 XML 元素接受解析的前后触发元素事件。
C、
任何元数据通常都由单独的事件交付。
D、在处理文档的 DTD 或 Schema 时产生 DTD 或 Schema
事件。
E、产生错误事件用来通知主机应用程序解析错误。
6、sax 的解析流程
Start document
(
1
)创建事件处理程序。
Start element:doc
(
2)创建 SAX 解析器。
Start element:para
(
3)将事件处理程序分配给解析器。
Characters:hello.word! (4)对文档进行解析,将每个事件发送给处理程序
Endelement para
Endement:doc
enddocument
7、sax 的优点
1 解析速度快,sax 解析器对文档的解析过程是一种一边解析一边执行的过程
2 内存消耗少,在 sax 解析过程中,无需把文档都加载到内存中。
3contentHandler 可以又都个,使用 sax 解析器,可以注册多个 contentHandler
对象,并执行
8、sax 的缺点
1 必须实现事件处理程序
2 不能随机访问,sax 解析器对文档的解析是顺序进行的
3 不能修改文档,使用 sax 只能读取文档的内容,无方法做到向文档加节点。更不能
删除和修改文档内容。
9、contentHandler 接口
ContentHandler 是 Java 类包中一个特殊的 SAX 接口,位于 org.xml.sax 包中。该
接口封装了一些对事件处理的方法,当
XML 解析器开始解析 XML 输入文档时,它会遇到
某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的字符数据等事
件。当遇到这些事件时,
XML 解析器会调用 ContentHandler 接口中相应的方法来响应
该事件。
Contenthandler 接口的方法有以下几种:
Void startDocument()
Void endDocument()
Void startElement(string localName,String aName, Attributer atts);
Void endElement(String uri,string localName.String qName);
Void characters(char[] ch,int start,int length);
10、EntityResolver 接口