一、SAX (Simple API for XML)
- SAX解析XML文件采用的是事件驱动,它不需要解析完整个文档,而是一边按内容顺序解析文档,一般判断当前读到的字符是否符合XML语法中的某部分,如果符合则会回调一些函数来处理事件。
- 使用SAX的优点:SAX采用流的形式来处理,占用内存少。
二、事件处理器DefaultHandler
事件驱动的回调函数在DefaultHandler中,因此需要写一个DefaultHandler子类,然后在回调函数中处理相关的事件。
public class XMLPersonHandler extends DefaultHandler { @Override public void startDocument() throws SAXException { //开始解析xml之前的预处理 } @Override public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { // 解析到节点的开头标签'<...'时被调用 // uri:命名空间 // localName:不带命名空间前缀的标签名 // qName:带命名空间的标签名 // attributes:标签的属性集合 <person id="001"></person> // 如上,属性id在attributes中,获取标签数据如下: // attributes.getQName( ),attributes.getValue( ) } @Override public void characters(char[] ch, int start, int length) throws SAXException { // 读取**开头标签**到'>'时被调用,获取标签所夹的内容。 //<name>Jack</name> // ch[]:内容 // start&#x