简述@H_404_1@
SAX的全称是Simple APIs for XML,也即XML简单应用程序接口
SAX API是一个基于事件的API
SAX分析XML时触发一系列事件,并激活相应的事件处理函数,应用程序通过这些事件处理函数实现对XML文档的访问,因而SAX也被称作事件驱动
SAX API主要的四种处理事件的接口
ContentHandler
DTDHandler
EntityResolver
ErrorHandler
优缺点
当解析器发现元素开始,元素结束,文本,文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据
优点:
不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小
使用场合Applet下载
缺点:
不是持久的,事件过后,若没保存数据,那么数据就丢了;
无状态性,从事件中只能得到文本,但不知该文本属于哪个元素;
使用场合只需XML文档的少量内容,很少回头访问;机器内存少
解析XML@H_404_1@
<?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>
<?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 */