SAX解析工具  

   SAX解析工具-  Sun公司提供的。内置在jdk中。org.xml.sax.*

 

核心的API:

   SAXParser类: 用于读取和解析xml文件对象。

   parse(File​ f, DefaultHandler dh)方法:解析xml文件                                    

       参数一: File:表示 读取的xml文件。

       参数二: DefaultHandler: SAX事件处理程序。使用DefaultHandler的子类

 

DefaultHandler类的API:

   void startDocument()  :  在读到文档开始时调用

   void endDocument()  :在读到文档结束时调用

   void startElement(String uri, String localName, String qName, Attributes attributes)  :读到开始标签时调用                                

   void endElement(String uri, String localName, String qName)   :读到结束标签时调用

   void characters(char[] ch, int start, int length): 读到文本内容时调用


SAX解析原理图:

SAX解析XML_xml


  Demo:


main入口:

package com.sax;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Demo1 {
public static void main(String[] args) throws Exception {
//获取SAXParserFactory工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//创建SAXParser对象
SAXParser saxParser = factory.newSAXParser();

//调用parse方法
/**
* 参数1:xml文档
* 参数2:DefaultHandler类
*/
saxParser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
}
}



MyDefaultHandler:


package com.sax;
import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
public class Demo1 {
public static void main(String[] args) throws Exception {
//获取SAXParserFactory工厂
SAXParserFactory factory = SAXParserFactory.newInstance();
//创建SAXParser对象
SAXParser saxParser = factory.newSAXParser();

//调用parse方法
/**
* 参数1:xml文档
* 参数2:DefaultHandler类
*/
saxParser.parse(new File("./src/contact.xml"), new MyDefaultHandler());
}
}


contact.xml:

<?xml version="1.0" encoding="utf-8"?>
<contactList>
<contact id="001" att1="属性值1">
<name>木丁西<nameNode>小刘</nameNode></name>
<age>18</age>
<phone>18071897425</phone>
<email>1012421396@qq.com</email>
<qq>1012421396</qq>
</contact>
<木丁西>
这是个什么鬼。
</木丁西>
<contact id="002">
<name>刘先森</name>
<age>20</age>
<phone>18771897466</phone>
<email>561242139@qq.com</email>
<qq>561242139</qq>
</contact>
<abc>
</abc>
</contactList>



效果:



SAX解析XML_sax_02