标签:
sax解析分为以下几步:
1 获取一个saxparserfactory
2 获取一个解析器
3 创建handler对象,这个myHandler是继承了DefaultHandler的一个类,这个实现类里写具体的解析逻辑
4 开始解析xml。
结构层次图:

具体如下面的代码:
mySAXparser:
package com.imooc.test;
import java.io.IOException;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.SAXException;
public class mySAXparser {
public static void main(String[] args) {
//1 获取一个saxparserfactory
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
//2 获取一个解析器
SAXParser parser = factory.newSAXParser();
/*
* 3 创建handler对象,这个myHandler是继承了DefaultHandler的一个类
* 这个实现类里写具体的解析逻辑
*/
myHandler handler = new myHandler();
//4 开始解析xml,
parser.parse("books.xml",handler);
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
myHandler:
package com.imooc.test;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class myHandler extends DefaultHandler{
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
}
/**
* 用来标志解析开始
*/
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
System.out.println("SAX解析开始");
}
/**
* 用来标识解析结束
*/
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("SAX解析结束");
}
/**
* 遍历xml文件的开始标签
*/
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
// TODO Auto-generated method stub
super.startElement(uri, localName, qName, attributes);
}
/**
* 遍历xml文件的结束标签
*/
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}
}
books.xml:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book id="1"> <name>冰与火之歌</name> <author>乔治马丁</author> <year>2014</year> <price>89</price> </book> <book id="2"> <name>安徒生童话</name> <year>2004</year> <price>77</price> <language>English</language> </book> </bookstore>
解析结果下:
SAX解析开始
SAX解析结束
标签:
原文地址:http://www.cnblogs.com/Sunnor/p/4760962.html