欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用DOM解析XML文档

程序员文章站 2022-06-15 14:42:38
创建一个XML文件,deptlist.xml 综合部 2020-01-01 400 ......

创建一个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>

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();
        }
    }

}