开发者学堂课程【XML入门 :使用 dom4j 实现查询 xml 操作(一)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/862
使用 dom4j 实现查询 xml 操作(一)
内容介绍
一、查询 xml 中所有 name 元素的值
二、查询第一个 name 元素的值
三、获取第二个 name 元素里的值
四、总结
一、查询 xml 中所有 name 元素的值
1.来到 p1.xml,查询所有 name 元素里面的值的步骤
第一步:创建解析器<person>
<p1>
<name>zhangsan</name>
<age>20</age>
</p1>
<p1>
<name>lisi</name>
<age>30</age>
</p1>
</person>
第二步:得到一个 document
解析从上到下依次解析,先解析 person 再是 p1,然后是 p1 里的 name。name 可以怎么得到?先得到 person,然后再得到 p1,最后才是 name
第三步:得到根节点: getrootelement{}
第四步:得到所有 p1 标签
第五步:得到 name
第六步:得到 name里面的值
2.得到所有的 p1
p1 在根节点的下面,p1 是一个 element,在 element 里有三个方法。
(1)element(qname) 表示获取标签下面的第一个子标签,qname 标签名称
(2)elements() 获取所有标签下面的所有一层子标签,不管什么名称,只要是子标签都可以得到
(3)elements(qname) 表示获取标签下面是这个名称的所有子标签(一层)
3.实现操作
在 src 下创建一个包,名字是 cn.itcast.dom4jtest ,在里面创建一个类,名字是TestDom4j,命名建议第一个字母大写,第二个单词首字母大写。
在 TestDom4j.java 中
import org.dom4j.io.SAXReader;
public class TestDom4j {
public static void main(String[] args) {
selectName();
}
//查询 xml 中所有 name 元素的值
public static void selectName()throws Exception {
selectName();
/*
*1、创建解析器
*2、得到 document
*3、得到根节点
*4、得到 p1
*5、得到 p1 下面的 name
*6、得到 name 里面的值
**/
//创建解析器
SAXReader saxReader = new SAXReader();
注意:这个 saxReader 导入org.dom4j.io 这个包里
//得到 document 注意:这个 document 不是 w3c 的而是 dom4j
Document document = saxReader.read("src/p1.xml")
//得到根节点
Element root = document.getRootElement();
这个包是 org.dom4j 下的,有时候会自动找出来但是要看对不对
//得到 p1
List list root.elements("p1")
表示得到所有的 p1,list 加一个版型,list 是 java.util 包下的,把 p1 放入 list 里去,要依次遍历 p1,再找到name
//遍历 list 用增强 for 循环
for (Element elememt : list){
第二个 element 是每一个 p1
//得到p1下面的 name 元素
Element name1 = element.element("name");
String s = name1.getText();
System.out.println(s);
}
}
运行结果:
zhangsan、lisi
二、查询第一个 name 元素的值
//获取到第一个 name 元素的值
public static void selectSin()throws Exception {
selectSin();
Public static void selectSin() {
/*
*1、创建解析器
*2、得到 document
*3、得到根节点
*4、获取第一个 p1 元素
*5、得到 p1下面的 name 元素
*6、得到name元素里面的值
**/
//创建解析器
SAXReader saxReader = new SAXReader();
//得到 document 注意:这个 document 不是 w3c 的而是 dom4j
Document document = saxReader.read("src/p1.xml")
//得到根节点
Element root = document.getRootElement();
//得到第一个 p1
Element p1 = root.element("p1");
//得到 p1 下面的 name 元素
Element name1 = p1.element("name");
//得到 name 的值
String s1= name1.getText();
System.out.println(s1);
}
}