开发者学堂课程【XML入门 :使用 dom4j 支持 XPATH 的操作一】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/870
使用 dom4j 支持 XPATH 的操作一
内容介绍
一、介绍 dom4j 里面使用 xpath
二、引入 jar 包
三、使用代码练习
四、重点强调
一、介绍 dom4j 里面使用 xpath
在默认情况下,dom4j 不支持 xpath。
如果想要在 dom4j 里面使用 xpath,需要引入支持 xpath 的 jar 包
二、引入 jar 包
1.介绍 jar 包
jar 包在资料里面.点击资料,再点击 dom4j-1.6.1
点开 lib 文件夹,里面有很多 jar 包。这里的 jar 包的含义是 dom4j 支持的其他 jar 包。比如说第一个 jaxen 的 jar 包,就是 dom4j 来支持 xpach 的 jar 包。
所以使用 jaxen-1.1-beta-6.jar,就需要把 jar 包导入到项目中。
2.怎么导入 jar 包
复制 jar 包,然后导入到 lib 目录下的 Paste 链接
右键点击 jaxen-1.1-beta-6.jar,然后点击 Build Path,然后再点击 Add to Build Path,
现在就可以在 Referenced Libraries 中看见 dom4j-1.6.1.jar 了。
再点击 jaxen-1.1-beta-6.jar,然后点击 Build Path,然后再点击 Add to Build Path,
就在 Referenced Libraries 里面做了一个 jaxen-1.1-beta-6.jar。
这就表示把 jar 包导入到了项目里面。
3.怎么使用 jar 包
在 dom4j 里面提供了两个方法,这两个方法用来支持 xpath
selectNodes("xpath 表达式")
-获取多个节点
selectSingleNode(“xpath 表达式”)
-获取一个节点
Single是单一的意思
三、使用代码练习
1.使用 xpath 实现:
查询 xml 中所有 name 元素的值
所有 name 元素的 xpath 表示://name
//查询 xml 中所有 name 元素的值中的 name(元素)有多个,所以使用selectNodes("xpath 表达式")方法
使用 selectNodes(“//name");
2.编写代码
//查询 xml 中的所有 name 元素的值
public static void test1() throws Exception {
/*
*1.得到 document
*2.直接使用 selectNodes("//name") 方法得到所有的 name 元素
*
* */
//得到 document
Dom4jUtils.getDocument(Dom4jUtils.PATH);
//此时得到 Document,返回 Document
Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);
//注意:这里的 Document在(org.dom4j) 项下
//使用 selectNodes("//name")方法得到所有的 name 元素
document selectNodes()
//直接输入 document,但是要注意 selectNodes
document selectNodes(”//name“)
//此时返回的是一个 list 集合
所以需要加一个泛型
List<Node> list = document selectNodes(”//name“)
//此时 List 是在(java.util)包下的。
//此时的 Node 是在(org.dom4j)包下的。
//遍历 list 集合
//遍历的方式:1.普通 for 循环;2.增强 for 循环;3.迭代器遍历
for (Node node : list) {
//node 是每一个 name 元素
node.getText();
//此时返回的是 String
//表示得到 name 元素里面的值
String s = node.getText();
System.out.println(s);
//通过这行代码就可以直接把 name 元素里面的值都可以得到
//可以发现通过最终方式写代码与前面写的代码相比,可以省去很多代码
}
}
3.实践
如果代码里面 name 的值是正确的,结果打印出来就 "zhangsan""lisi"
<person>
<p1 id1=”aaaa”>
<name>zhangsan</name>
<age>300</age>
<sex>nv</sex>
</p1>
<p1>
<name>lisi</name>
<age>30</age>
</p1>
</person>
开始运行
下面结果显示的是"zhangsan""lisi",代码正确。
4.完整代码
/*
*1.得到 document
*2.直接使用 selectNodes("//name") 方法得到所有的 name 元素
*
* */
//得到 document
Document document = Dom4jUtils.getDocument(Dom4jUtils.PATH);
//使用 selectNodes("//name")方法得到所有的 name 元素
List<Node> list = document selectNodes(”//name“)
//遍历 list 集合
for (Node node : list) {
//node 是每一个 name 元素
//得到 name 元素里面的值
String s = node.getText();
System.out.println(s);
四、重点强调
1.name 元素的 xpath 表示是 //name;
2.name 元素使用的是 selectNodes 方法,因为 name 元素是多个元素;
3.name 元素绑的是 list 的集合,就需要对 list 进行遍历。