`
lijunaccp
  • 浏览: 153181 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SAX解析XML

    博客分类:
  • XML
XML 
阅读更多
1.students.xml
<?xml version="1.0" encoding="UTF-8"?> 
<学生名册>  
<!-- 这是一个注释 --> 
    <学生 学号="1">   
        <姓名>张三</姓名>   
        <性别>男</性别>   
        <年龄>20</年龄>   
        <!-- 这是一个注释2 --> 
    </学生>   
    <学生 学号="2">   
        <姓名>李四</姓名>   
        <性别>女</性别>   
        <年龄>19</年龄>   
    </学生>   
    <学生 学号="3">   
        <姓名>王五</姓名>   
        <性别>男</性别>   
        <年龄>21</年龄>   
    </学生>   
</学生名册> 

2.SAXParse.xml
package com.lijun.xml.sax;

import java.io.File;
import java.util.Stack;

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;

public class SAXParse {

	public static void main(String[] args) throws Exception {
		//获得解析器三厂
		SAXParserFactory factory=SAXParserFactory.newInstance();
		//获得解析器
		SAXParser parser=factory.newSAXParser();
		//开始解析
		parser.parse(new File("students.xml"),new MyHandler());
		
	}
}

class MyHandler extends DefaultHandler{
	
	private Stack<String> stack=new Stack<String>();
	
	private String name;
	private String gender;
	private String age;
	
	@Override
	public void startElement(String uri, String localName, String qName,
			Attributes attributes) throws SAXException {
		stack.push(qName);
		for(int i=0;i<attributes.getLength();i++){
			String attrName=attributes.getQName(i);
			String attrValue=attributes.getValue(i);
			
			System.out.println(attrName+"="+attrValue);
		}
	}
	
	@Override
	public void characters(char[] ch, int start, int length)
			throws SAXException {
		String tagName=stack.peek();
		if("姓名".equals(tagName)){
			name=new String(ch,start,length);
		}else if("性别".equals(tagName)){
			gender=new String(ch,start,length);
		}else if("年龄".equals(tagName)){
			age=new String(ch,start,length);
		}
	}
	
	@Override
	public void endElement(String uri, String localName, String qName)
			throws SAXException {
		stack.pop();
		if("学生".equals(qName)){
			System.out.println("姓名:"+name);
			System.out.println("性别:"+gender);
			System.out.println("年龄:"+age);
			System.out.println();
		}
	}
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics