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