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解析原理图:
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>
效果: