Dom4j解析【開發中常用】

TZQ_DO_Dreamer發表於2014-09-20
需要導包:dom4j-1.6.1.jar   jaxen-1.1-beta-6.jar

------讀取---------
package com. atguigu.xml.dom4j;

import java. util.Iterator;
import java. util.List;

import org. dom4j.Document;
import org. dom4j.Element;
import org. dom4j.io.SAXReader;

public class Dom4jParse {
    
    //①查詢某一個節點 : 查詢id 007的學員的所有資訊
    public static void main(String[] args) throws Exception {
        
         //1.獲取解析器物件
        SAXReader reader = new SAXReader ();
        
         //2.獲取Document 物件
        Document document = reader.read( "XML/students.xml");
        
         //3.獲取XML 文件的根節點物件
        Element rootElement = document .getRootElement ();
        
         //4.獲取所有的student 元素物件,並進行遍歷
        List <Element > stuList = rootElement.elements( "student");
        Iterator <Element > iterator = stuList .iterator ();
         while (iterator .hasNext ()) {
    
            Element stuEle = iterator .next ();
             //5.獲取每一個student 元素物件的id屬性值
            String idStr = stuEle .attributeValue ("id");
            
             //6.檢測id 屬性值是否等於 007
             if("007" .equals (idStr )) {
                 //7.如果等於則獲取name值和 age
                Element nameEle = stuEle .element ("name");
                Element ageEle = stuEle .element ("age");
                String nameStr = nameEle .getText ();
                String ageStr = ageEle .getText ();
                
                System .out .println ("name="+nameStr+" age="+ageStr);
                
             }       
            
         }       
    }

}


------寫入-----

package com. atguigu.xml.dom4j;

import java. io.FileWriter;
import org. dom4j.Document;
import org. dom4j.Element;
import org. dom4j.io.OutputFormat ;
import org. dom4j.io.SAXReader;
import org. dom4j.io.XMLWriter;

public class Dom4jEdit {
    
    //②新增某一個節點 : "姓名:張三丰,id:武當 ,年齡:108
    public static void main(String[] args) throws Exception {
        
         //1.獲取Document 物件
        SAXReader reader = new SAXReader ();
        Document document = reader.read( "XML/students.xml");
        
         //2.構建並新增節點內容
         /*
        <student id=" 武當">
            <name> 張三丰</name>
            <age>108</age>
        </student>
        */
         //①獲取根節點,在根節點下,新增 student元素<student></student>
         //②在新student 中新增id屬性 <student id="武當"></student>
         //③在新student 下面新增name元素 <student id="武當"><name></name></student>
         //④在新name 下新增文字<student id="武當 "><name>張三丰</name></student>
         //⑤在新student 下面新增age元素 <student id="武當"><name> 張三丰</name><age></age></student>
         //⑥在新age 下新增文字<student id="武當 "><name>張三丰</name><age>108</age></student>
        Element rootElement = document .getRootElement ();
        rootElement
             .addElement ("student")
             .addAttribute ("id", " 武當")
             .addElement ("name")
             .addText ("張三丰 ")
             .getParent ()
             .addElement ("age")
             .addText ("108");
        
         //3.將更新的內容寫入XML文件
         //①獲取XMlWriter 物件
         //為了使XML 節點內容寫入後保持較好的格式,可以傳入一個格式物件
        OutputFormat format = OutputFormat.createPrettyPrint();
        XMLWriter writer = new XMLWriter (new FileWriter("XML/studentsNewPretty.xml"), format);
        
         //②將Document 物件寫入
        writer .write (document );
        
         //③關閉XMlWriter 物件
        writer .close (); 
    }
}



相關文章