简述
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口 SAX API是一个基于事件的API SAX分析XML时触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX也被称作事件驱动 SAX API主要的四种处理事件的接口 ContentHandler DTDHandler EntityResolver ErrorHandler 优缺点 当解析器发现元素开始,元素结束,文本,文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据 优点: 不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小 使用场合Applet下载 缺点: 不是持久的,事件过后,若没保存数据,那么数据就丢了; 无状态性,从事件中只能得到文本,但不知该文本属于哪个元素; 使用场合只需XML文档的少量内容,很少回头访问;机器内存少
解析XML
<?xml version="1.0" encoding="UTF-8"?> <students> <student no="1001"> <name>lwc</name> <sex>boy</sex> <age>18</age> </student> <student no="1002"> <name>lwc</name> <sex>boy</sex> <age>18</age> </student> </students>
案例
package com.itlwc.action; import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; class MyHandler extends DefaultHandler { @Override public void startDocument() throws SAXException { System.out.println("parse began"); } @Override public void endDocument() throws SAXException { System.out.println("parse finished"); } @Override public void startElement(String uri,String localName,String qName,Attributes attributes) throws SAXException { System.out.println("start element : " + qName); } @Override public void endElement(String uri,String qName) throws SAXException { System.out.println("finish element : " + qName); } } public class TestSax { public static void main(String[] args) throws Exception { // 获得SAX解析器工厂实例 SAXParserFactory factory = SAXParserFactory.newInstance(); // 获得SAX解析器实例 SAXParser parser = factory.newSAXParser(); // 开始进行解析 parser.parse(new File("student.xml"),new MyHandler()); } } /* 打印结果: parse began start element : students start element : student start element : name finish element : name start element : sex finish element : sex start element : age finish element : age finish element : student start element : student start element : name finish element : name start element : sex finish element : sex start element : age finish element : age finish element : student finish element : students parse finished */