package dome;
import java.io.File;
import java.util.Iterator;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class TestDom {
public static void main(String args[]){
SAXReader sa = new SAXReader();
Student stu = new Student();
try {
Document doc = sa.read(new File("c://student.xml"));//获得需要解析的XML文档
Element root = doc.getRootElement();//得到根元素 students元素
for(Iterator it = root.elementIterator();it.hasNext();){ //遍历 根元素,获得每个元素都是根元素下的第一层子元素
Element ele = (Element) it.next();//拿出一个子元素
Attribute ageAtt = ele.attribute("age");//看看有没有age这个属性
if(ageAtt!=null){//判断一下
String age = ageAtt.getText();//如果有,先取值
if(age.equals("")){//判断是否为空串
stu.setAge("20");//是空串,默认赋值20
}else{
stu.setAge(age);//不是空串,该什么值给什么值
}
}else{
stu.setAge("20");//如果没又age这个属性,默认赋值20
}
for(Iterator eleinner = ele.elementIterator();eleinner.hasNext();){//继续遍历子元素的子元素
Element ele2 = (Element) eleinner.next();//得到下一级元素
if(ele2.getName().equals("college")){//如果元素名字为college的话
stu.setCollege(ele2.getText());//先把值赋给对象
Attribute leaAtt = ele2.attribute("leader");//然后看看这个元素有没有leader这个属性
if(leaAtt!=null){//如果有这个属性
String leader = leaAtt.getValue();//先取值
stu.setLeader(leader);//赋值这个值
if(leader.equals("")){//如果这个值为空串
stu.setLeader("leader");//默认赋值leader
}
}else{//如果没有这个属性
stu.setLeader("leader");//默认赋值leader
}
}else if(ele2.getName().equals("name")){//如果元素名为name
stu.setName(ele2.getText());//赋值
}else if(ele2.getName().equals("telephone")){
stu.setTelephone(ele2.getText());
}else if(ele2.getName().equals("notes")){
stu.setNotes(ele2.getText());
}
}
System.out.println(stu.getName()+"/t"+stu.getAge()+"/t"+stu.getCollege()+"/t"+stu.getLeader()+"/t"+stu.getTelephone()+"/t"+stu.getNotes() );
}
} catch (DocumentException e) {
e.printStackTrace();
}
}
}
------------------------------------
xml文件
<?xml version="1.0" encoding="gb2312"?>
<students>
<student age="25"><!--如果没有age属性,默认的为20-->
<name>崔卫兵</name>
<college>PC学院</college>
<telephone>62354666</telephone>
<notes>男,1982年生,硕士,现就读于北京邮电大学</notes>
</student>
<student>
<name>鲁西西</name>
<college leader="学院领导">PC学院</college><!--如果没有leader属性,默认的为leader-->
<telephone>62358888</telephone>
<notes>男,1987年生,硕士,现就读于中国农业大学</notes>
</student>
<student age="45">
<name>皮皮鲁</name>
<college leader="">xxx学院</college>
<telephone>66666666</telephone>
<notes>注视中,注释中</notes>
</student>
<student age="">
<name>郑渊洁</name>
<college>yyyy学院</college>
<telephone>88888888</telephone>
<notes>注视中111,注释中222</notes>
</student>
</students>
------------------------------