标签:
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