使用DOM解析XML文档

2020-01-07 08:33:43来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

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

}

原文链接:https://www.cnblogs.com/xingsir/p/12160011.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:ScheduledThreadPoolExecutor中定时周期任务的实现源码分析

下一篇:并发编程的基石——CAS机制