1. 程式人生 > >dom4j解析xml 檔案 並對其操作

dom4j解析xml 檔案 並對其操作

程式碼例項

package cn.test.dom4jtest;

import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class TestDom4j {

    public static void main(String[] args) throws Exception {
        selectName();
        selectSingleName(2);
        addAgeBefore();
    }
    
    public static void  addAgeBefore() throws Exception{
        /*
         *  1建立解析器
         *  2得到document
         *  3得到根節點
         *  
         *  4得到第1個 p1
         *  5獲得p1下面所有元素
         *            elements()方法返回list集合
         *            使用list 裡面的方法 在特定位置新增元素
         *            第一個引數是位置下標 從0開始
         *  6回寫xml          
         */
        SAXReader saxReader = new SAXReader();    
        Document document = saxReader.read("src/person.xml");
        Element root =document.getRootElement();
        Element  p1 = root.element("p1");
        List<Element> list = p1.elements();
        
        //新增元素
        Element school=DocumentHelper.createElement("school");
        school.setText("one");
        list.add(1,school);
        
        //回寫xml
        OutputFormat format =OutputFormat.createPrettyPrint();
        XMLWriter xmlWriter=new XMLWriter(new FileOutputStream("src/person.xml"),format);
        xmlWriter.write(document);
        xmlWriter.close();
    }
    
    //查詢 xml中第n個 name元素的值
    public static void  selectSingleName(int index) throws Exception{
        /*
         *  1建立解析器
         *  2得到document
         *  3得到根節點
         *  
         *  4得到第n個 p1
         *  5得到p1 name下面的值
          */
        SAXReader saxReader = new SAXReader();    
        Document document = saxReader.read("src/person.xml");
        Element root =document.getRootElement();
        List<Element > list = root.elements("p1");
        if(list.size()>=index){
        Element element=list.get(index-1);
        Element name=element.element("name");
        System.out.println(name.getText());
        }else{
            System.out.println("no search");
        }
        }
    
    
    //查詢 xml中所用name元素的值
    public static void  selectName() throws Exception{
        /*
         *  1建立解析器
         *  2得到document
         *  3得到根節點
         *  
         *  4得到p1
         *  5得到p1 name下面的值
          */
        SAXReader saxReader = new SAXReader();    
        Document document = saxReader.read("src/person.xml");
        Element root =document.getRootElement();
        List<Element > list = root.elements("p1");
        //遍歷list
        for (Element element : list) {
            Element name=element.element("name");
            System.out.println(name.getText());
            
        }
        
    }

}