package com.heilong.xml;
/**
* xml SAX解析
*/
import javax.xml.parsers.ParserConfigurationException;
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;
/**
* SAX解析
* @author Admin
*
*/
/**
* SAX处理程序
* void startDocument(); //在读到文档开始时调用
* void endDocument(); //在读到文档结束时调用
* void startElement(String url, String localName, String qName, Attributes attributes); //读到开始标签时时调用
* void endElement(String url, String localName, String qName); //读到结束标签时调用
*
* void characters(char[] ch, int start, int length); //读到文本内容时调用
* @author Admin
*
*/
class MyDefaultHandler extends DefaultHandler{
/**
* 开始文档时带调用
*/
@Override
public void startDocument() throws SAXException {
System.out.println("MyDefaultHandler.startDocumen()t");
}
/**
* 开始标签时调用
* @param qName:表示开始标签的标签名
* @param attributes:表示开始标签内包含的属性列表
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
System.out.println("MyDefaultHandler.startElement()-->"+qName);
}
/**
* 读到文本内容时调用
* @param ch:表示xml的所有文本内容
* @param start:表示当前文本内容的开始位置
* @param length:表示当前文本内容的长度
*/
@Override
public void characters(char[] ch, int start, int length) throws SAXException {
String content = new String(ch,start,length);
System.out.println("MyDefaultHandler.characters()-->"+content);
}
/**
* 结束标签时调用
* @param qName:表示结束标签的标签名
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
System.out.println("MyDefaultHandler.endElement()-->"+qName);
}
/**
* 结束文档时带调用
*/
@Override
public void endDocument() throws SAXException {
System.out.println("MyDefaultHandler.endDocument()");
}
}
public class SaxParser {
public static void main(String[] args) throws Exception {
//1.创建SAXParser对象
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
//2.调用parse方法
/**
* 参数1:xml文档
* 参数2:DefaultHandler的子类
*/
parser.parse("./src/contact.xml", new MyDefaultHandler());
}
}