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>
------------------------------