Sax解析Xml

程序1.

 

package WildCat.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 SaxTest1_2 {

public static void main (String [] args) throws Exception, SAXException

{

//创建一个工厂

SAXParserFactory spf=SAXParserFactory.newInstance();

//获得解析器

SAXParser parser=spf.newSAXParser();

//开始解析

parser.parse(new File("学生名单.xml"), new MyHandler2());

}

}

class MyHandler2 extends DefaultHandler

{

//

private Stack<String> stack=new Stack<String>();

private String name;

private String sax;

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 tag=stack.peek();

if ("姓名".equals(tag))

{

name=new String(ch,start,length);

}

else if ("性别".equals(tag))

{

sax=new String(ch,start,length);

}

else if ("年龄".equals(tag))

{

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("性别:"+sax);

System.out.println("年龄:"+age);

}

}

}

运行结果:

学号=01

姓名:张三

性别:男

年龄:20

学号=02

姓名:李红

性别:女

年龄:19

学号=03

姓名:李四

性别:男

年龄:21

你可能感兴趣的:(Sax解析Xml)