XML文件解析(SAX/DOM) :
什么是SAX(一种标准)?
:全称是:Simple API for XML,既是一种接口,也是一个软件包
:作为接口,SAX是事件驱动型XML解析的一个标准接口
SAX基本原理是怎么样的?
简单的说就是的文档进行顺序扫描,当文档(document)开始与结束、元素(element)开始与结束、文档(document)结束等地方时通知事件处理函数,有事件处理函数做相应的动作,然后继续同样的扫描,直至文档扫描结束。
大所属SAX实现都会产生以下类型的事件:{
1:在文档开始和结束的时触发文档处理事件
2:在文档内每一个XML元素接受解析的前后触发元素事件
3:任何元素通常都有单独的事件交付
4:在处理文档的DTD或Schema时产生DTD或Schhema事件
5:产生错误事件来用来通知主机应用程序解析错误
}
解析文档的过程:
<doc>
<para>Hello,world</pars>
</doc>
start dicument
start element:doc
start element:para -->>1:创建事件处理程序
characters:para 2:创建SAX解析器
end element:para 3:将事件处理程序分配给解析器
end element:doc 4:对文档进行解析,将每个事件发送处理程序
end docunment
每次产生事件都会触发相应的函数
SAX常用接口(由我来复写实现一下接口的方法):
ContentHandler:
【
ContentHandler是java类包中的一个页数的SAX接口,位于org.xml.sax保重,该接口封装了一些对事件处理的方法,当xml解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头与结束,元素的开头和结束,以及元素中的字符数据等方法来响应该事件。
ContentHandler接口的方法有一下几种:
public void startDocument() 文件刚开始时执行的方法
public void endDocument() 文件结束时执行的方法
public void startElement(String uri, String localName, String qName, Attributes attributes) 属性开始时执行的方法
public void endElement(String uri, String localName, String qName)属性结束时执行的方法
public void characters(char ch[], int start, int length)读取属性内容执行的方法
】
ErrorHandler:
DTDHandler:
EntityHandler:
SAX解析:
特性:
优点:操作方便
缺点:如果xml文件比较大,则操作非常复杂