使用DOM解析XML文檔


創建一個XML文件,deptlist.xml

<?xml version="1.0" encoding="UTF-8"?>
<list>
<dept id="1">
        <name>綜合部</name>
        <createtime>2020-01-01</createtime>
        <age>400</age>
        <minister>孫悟空</minister>
    </dept>
    <dept id="2">
        <name>人事部</name>
        <createtime>2020-01-02</createtime>
        <age>300</age>
        <minister>朱悟能</minister>
    </dept>
    <dept id="3">
        <name>研發部</name>
        <createtime>2020-01-03</createtime>
        <age>200</age>
        <minister>白龍馬</minister>
    </dept>
    <dept id="4">
        <name>銷售部</name>
        <createtime>2020-01-04</createtime>
        <age>300</age>
        <minister>沙悟凈</minister>
    </dept>
    <dept id="5">
        <name>售后部</name>
        <createtime>2020-01-05</createtime>
        <age>1000</age>
        <minister>唐三藏</minister>
    </dept>
</list>
deptlist.xml

2.創建一個xml.java文件

package xml;
/**
 * @author xingsir
 * 部門類
 * 該類每個實例用於表示一個部門信息
 */
public class Dept {
    //創建屬性
    private int id;
    private String name;
    private String createtime;
    private int age;
    private String minister;
    /*
     * 右鍵點-Source-點 -generate constructor using fields,選擇要生成的屬性
     * 這個選項自動生成帶參數的 構造函數
     */
    public Dept(int id, String name, String createtime, int age, String minister) {
        super();
        this.id = id;
        this.name = name;
        this.createtime = createtime;
        this.age = age;
        this.minister = minister;
    }
    /*
     * 右鍵點-Source-點 -generate getters and setters,選擇要生成的屬性
     */


    public String toString() {
        return id+","+name+","+createtime+","+age+","+minister;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getCreatetime() {
        return createtime;
    }
    public void setCreatetime(String createtime) {
        this.createtime = createtime;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getMinister() {
        return minister;
    }
    public void setMinister(String minister) {
        minister = minister;
    }
}

3.創建 ParseXmlDemo2.java文件用於解析

package xml;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

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

/**
* @author xingsir
*  使用DOM解析XML文檔
*/
public class ParseXmlDemo2 {

    public static void main(String[] args) {
        /*
         * 將deptlist.xml文件中的所有部門信息讀取出來
         */
        List<Dept> deptList = new ArrayList<>();

        
        try {
            /*
             * 使用DOM4J解析XML的大致步驟
             * 1:創建SAXReader
             * 2:使用SAXReader讀取指定的xml文檔並生成Document對象
             * 3:通過Document對象獲取根元素
             * 4:從根元素開始逐級獲取子元素已達到遍歷XML文檔數據的目的  
             */
            SAXReader reader=new SAXReader();
            Document doc= reader.read(new File("deptlist.xml"));
            /*
             * Document提供了獲取根元素的方法:Element getRootElement()
             * 
             * Element每個實例用於表示XML文檔中的一個元素(一對標簽)
             * 常用方法:
             * String getName()獲取當前標簽的名字
             * String getText()獲取當前標簽中間的文本信息
             * Element element(String name)獲取當前標簽中指定名字的子標簽
             * List elements()獲取當前標簽中所有子標簽,返回的List集合中會包含若干的Element實例,每個實例是其中一個子標簽
             * List elements(String name)獲取當前標簽中所有同名子標簽(指定的名字)
             */
            Element root= doc.getRootElement();
            //獲取根標簽下所有<dept>標簽
            List<Element>list =root.elements("dept");
            //遍歷部門標簽獲取每個部門的信息
            for(Element empEle :list) {
                //獲取部門名稱
                Element nameEle= empEle.element("name");
                String name=nameEle.getText();
                
                //獲取創建時間,可以用elementText()直接獲取文本信息
                String createtime =empEle.elementText("createtime");
                
                //獲取年齡
                int age = Integer.parseInt(empEle.elementText("age"));
                //獲取ID
                int id = Integer.parseInt(empEle.attributeValue("id"));
                
                String minister=empEle.elementText("minister");
                //實例化
                Dept dept =new Dept(id, name, createtime,age,minister);
                     //添加
                    deptList.add(dept);
                    
            }
            
            System.out.println("解析完畢!");
            //遍歷
            for(Dept d : deptList) {
                System.out.println(d);
            }
            } catch (Exception e) {
                e.printStackTrace();
        }
    }

}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM