SAX解析XML:
SAX基本原理:
采用事件驱动解析XML文件,以流式方式逐行的去读,它不需要解析完整个文档,在按内容顺序解析文档的过各中,SAX会判断当前讲到的字符是否合法XML语法中的某部分,如果符合就触发事件(例如startDocument()、endDocument()诸如此类的事件),它的特点是不会记录前面所碰到的标签,并且它是一个解析速度快并且占用内存少的XML解析器,
SAX解析步骤:
1、从SAXPraserFactory中创建一个新的实例
2、再从SAXParserFactory里得到一个新的SAX解析器对象SAXParser
3、再调用SAXParser对象的.parse()方法里面带两个参数一个是输入流一个是DefaultHandler对象这样就可以了。而DefaultHandler是实现了ContentHandler接口的。ContentHandler接口中定义了一系列的方法事件:诸如:
方法作用:文档解析触发此事件
方法作用:文档解析结束时触发此事件
方法作用:当开始读取元素时触发此事件
参数说明:
uri:命名空间
localName:不带命名空间的前缀的标签名
qName:不定期命名空间前缀的标签名
atts:得到所有的属性各和相应的值
方法作用:读取的标签结束时触发此事件,参数说明同上
方法作用:用来处理在XML文件中读到的内容
参数说明:
ch:用于存放文件的内容
start:所读到的字符串在这个数组中的起始位置
length:长度
我们可以用new String(ch,start,length)来获取内容
下面以person.xml文件为例采用SAX解析器来模拟解析这个XML文档:
解析person.xml触发的事件为: