<?xml version="1.0" encoding="utf-8"?>
<class>
<stu home="菏泽" address = "北京" num="sp001" boss="sp002">
<name>杨过 </name>
<sex>男</sex>
<age>20 </age>
</stu>
<stu num="sp002" boss="sp001">
<name>李莫愁</name>
<sex>女</sex>
<age>38</age>
</stu>
</class>
import javax.xml.parsers.*;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.*;
public class saxxml1 {
public static void main(String[] args) throws Exception{
//1.创建SaxParserFactory
SAXParserFactory spf = SAXParserFactory.newInstance();
//2.创建SaxParser解析器
SAXParser saxParser = spf.newSAXParser();
//3.把xml文件和事件处理对象关联
saxParser.parse("src/classes.xml", new MyDefaultHandler2());
}
}
//定义事件处理类
class MyDefaultHandler1 extends DefaultHandler{
//发现文档开始
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
//System.out.println("发现startDocument()");
}
//发现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);
//System.out.println("发现startElement()"+qName);
}
//发现xml文件中的文本
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
//System.out.println("发现characters()");
String con = new String(ch,start,length);
if(!con.trim().equals("")){
System.out.println(con);
}
}
//发现一个元素结束
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
//System.out.println("发现endElement()");
}
//文档结束
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
//System.out.println("发现endDocument()");
}
}
//如何只显示姓名和年龄
class MyDefaultHandler2 extends DefaultHandler{
private boolean name = false;
private boolean age = false;
@Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
super.startDocument();
}
@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);
if(qName.equals("name")){
name = true;
}else if(qName.equals("age")){
age = true;
}
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
String con = new String(ch,start,length);
if((!con.trim().equals(""))&&(name||age)){
System.out.println(con);
}
name = false;
age = false;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
}
@Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
}
}