XML之sax解析

XML解析有不少種方法,上次寫了一個DOM的解析,此次寫一個SAX解析,他們的優缺點在後面的總結中寫!java

別的先不說,先上代碼!ide

XML:code

<?xml version="1.0" encoding="GB2312"?>
<RESULT>
<VALUE>
   <NO>A1234</NO>
   <ADDR>四川省XX縣XX鎮XX路X段XX號</ADDR>
</VALUE>
<VALUE>
  <NO>B1234</NO>
   <ADDR>四川省XX市XX鄉XX村XX組</ADDR>
</VALUE>
</RESULT>

java:xml

package www.yq.com.src;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Stack;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

/** 
 * @Project     XMLSimpleTest 
 * @File        MyXmlReader.java 
 * @Package     www.yq.com.src 
 * @Date        2016年1月25日 下午4:34:38 
 * @Author      
 * @email       
 */
public class MyXmlReader extends DefaultHandler{
	Stack tags = new Stack();
	
	public static void main(String[] args) {
		File f = new File("E:\\qi.xml");
		SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
		SAXParser parser;
		try {
			parser = saxParserFactory.newSAXParser();
			MyXmlReader handler = new MyXmlReader();
			parser.parse(f, 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();
		}
		
		
	}

	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		super.characters(ch, start, length);
		String tag = (String) tags.peek();
		if(tag.equals("NO")){
			System.out.println("--------------");
			System.out.println("車牌號:"+new String(ch,start,length));
		}
		if(tag.equals("ADDR")){
			System.out.println("--------------");
			System.out.println("車牌地址:"+ new String(ch, start, length));
		}
	}

	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		super.startElement(uri, localName, qName, attributes);
		tags.push(qName);
	}
	

}

運行結果:io

相關文章
相關標籤/搜索