您的位置:首页 > 其它

xml-dom crud操作

2014-01-29 16:18 316 查看
<?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();
}

}





                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: