SAX,全称Simple API for XML,既是指一种接口,也是指一个软件包。SAX工作原理简单地说就是对文档进行顺序扫描,当扫描到文档(document)开始与结束、元素(element)开始与结束等地方时通知事件处理函数,由事件处理函数做相应的动作,然后继续同样的扫描,直至文档结束。
大多数SAX实现都会产生一下类型的事件:
1、在文档的开始和结束时触发文档处理事件
2、在文档内每个XML元素接受解析的前后触发元素事件
3、任何元数据通常都由单独的事件交付
4、在处理文档的DTD或Schema时产生DTD或Schema事件
5、产生错误事件用来通知主机应用程序解析错误。
SAX的常用接口介绍:
ContentHandler接口,当XML解析器开始解析XML输入文档时,它会遇到某些特殊的事件,比如文档的开头和结束、元素开头和结束、以及元素中的字符数据等事件。当遇到这些事件时,XML解析器会调用ContentHandler接口中相应的方法响应该事件。
ContentHandler接口的方法有一下几种:
void startDocument() //SAX Reader开始读取XML文档时
void endDocument() //SAX Reader读取结束时
void startElement(String uri,String localName,String qName,Attributes atts) //开始读取XML文档中的一个标签时
void endElement(String uri,String localName,String qName) //结束标签时
void characters(char[] ch,int start,int length) //读取到标签的内容时