使用DOM解析XML文档
程序员文章站
2022-06-15 14:42:38
创建一个XML文件,deptlist.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(); } } }
上一篇: 基于递归算法,树形结构数据下业务场景,封装解决方法
下一篇: 一个if-else搞定输出棱形