码迷,mamicode.com
首页 > 其他好文 > 详细

SAX方式解析XML

时间:2015-08-26 17:14:22      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

  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解析结束

 

SAX方式解析XML

标签:

原文地址:http://www.cnblogs.com/Sunnor/p/4760962.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!