• 使用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();
            }
        }
    
    }
  • 相关阅读:
    周赛D. Digging for Gold(扫描线)
    CF1209F Koala and Notebook(最短路+拆点)
    P6793 [SNOI2020]字符串(后缀树上DP)
    [HEOI2016/TJOI2016]字符串(后缀自动机,可持久化线段树,线段树合并,二分答案)
    CF1166F Vicky's Delivery Service(并查集,启发式合并)
    P4248 [AHOI2013]差异(后缀树)
    CF1175F The Number of Subpermutations(单调栈,ST表)
    CF666E Forensic Examination(后缀自动机,可持久化线段树合并)
    GYM103069G. Prof. Pang's sequence
    [转]C#、VB.NET使用HttpWebRequest访问https地址(SSL)的实现
  • 原文地址:https://www.cnblogs.com/xingsir/p/12160011.html
Copyright © 2020-2023  润新知