文章插图
<?xml version="1.0" encoding="UTF-8" ?><students><student id="01"><name>小龙女</name><gender>女</gender><age>16</age><resume>古墓派掌门人</resume></student><student id="02"><name>欧阳锋</name><gender>男</gender><age>18</age><resume>白驼山弟子</resume></student></students>
Dom4j_.java:import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;public class Dom4j_ {/*** 演示如何加载xml文件*/@Testpublic void loadXML() throws DocumentException {//得到一个解析器SAXReader reader = new SAXReader();//debug-->看看document对象的属性Document document = reader.read(new File("src/students.xml"));System.out.println(document);}}
- 如下:在
Document document=reader.read(new File("src/students.xml"));
处打上断点:
文章插图
- 点击debug,点击step over,可以看到document对象,它代表整个文档 。
展开document对象,rootElement代表的就是students根元素
文章插图
- rootElement下面有一个content属性,content属性存储着所有的elementData
文章插图
- 点击elementData属性 , 可以看到该属性有5个对象:
文章插图
和html-dom解析一样,这五个对象中有三个是换行符号\n,其余的两个才是根元素下面的子元素student
- 点击展开索引为1的元素对象(即student元素),可以看到该元素对象中又包含了9个对象,除了换行符之外,其余的对象就是student元素的子元素,name节点,gender节点 , age节点和resume节点
文章插图
文章插图
文章插图
- 点击name节点,展开 , 即可看到name节点的值
文章插图

文章插图
1.方式一遍历
演示案例1:遍历xml指定元素
import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;import java.util.List;public class Dom4j_ {/*** 遍历所有的student信息*/@Testpublic void listStus() throws DocumentException {//得到一个解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/students.xml"));//1.得到rootElementElement rootElement = document.getRootElement();//2.得到rootElement的student节点List<Element> students = rootElement.elements("student");System.out.println(students.size());//2for (Element student : students) {//student就是student节点/元素//获取student节点的name节点Element name = student.element("name");//因为name只有一个,这里用element方法Element age = student.element("age");Element gender = student.element("gender");Element resume = student.element("resume");System.out.println("学生信息=" + name.getText() + " " +age.getText() + " " + gender.getText() + " " + resume.getText());}}}

文章插图
2.方式一查询
案例2:读取指定xml元素
import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import org.testng.annotations.Test;import java.io.File;public class Dom4j_ {/*** 指定读取第一个学生的信息*/@Testpublic void readOne() throws DocumentException {//得到一个解析器SAXReader reader = new SAXReader();Document document = reader.read(new File("src/students.xml"));//1.得到rootElementElement rootElement = document.getRootElement();//2.获取第一个学生Element student = (Element) rootElement.elements("student").get(0);//3.输出该学生的信息System.out.println("学生信息=" +student.element("name").getText() + " " +student.element("age").getText() + " " +student.element("gender").getText() + " " +student.element("resume").getText());//4.获取student元素的属性System.out.println("id="+student.attributeValue("id"));}}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 华为nova9pro上市时间及价格_华为nova9pro官方最新曝光
- 微信支付v3接口的 官方 Java SDK
- .net 温故知新:【8】.NET 中的配置从xml转向json
- MySQL的下载、安装、配置
- 苹果13上市时间与价格_苹果13上市时间官方价格
- 荣耀50多久上市_荣耀50什么时候上市
- 【pytest官方文档】解读-开发可pip安装的第三方插件
- 华为台式电脑官网报价及图片_华为台式电脑官方售价是多少
- cf改名怎么改(cf被官方强制改名)
- 华为mate50发布时间确定_华为mate50官方首曝