dom4j的简单实例

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>

------------------------------

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值