1 XPATH简介
1、可以直接获取到某个元素
2、第一种书写形式:/AAA/DDD/BBB
:表示一层一层的,AAA下面的DDD下面的BBB
3、第二种书写形式://BBB
(选择所有的BBB元素)、/DDD//BBB
(选择所有父元素为DDD的BBB元素)
4、第三书写形式:/AAA/BBB/DDD*
(选择所有路径依附于/AAA/BBB/DDD的元素)、/*/*/*/BBB
(选择所有的有3个祖先元素的BBB元素)、//*
(选择所有元素)。
5、第四种书写形式:/AAA/BBB[1]
(选择AAA元素下的第一个BBB元素)、/AAA/BBB[last()]
(选择AAA元素下的最后一个BBB元素)
6、第五种书写形式://@id
(选择所有的id属性)、//BBB[@id]
(选择有id属性的BBB元素)
7、第六种书写形式://BBB[@id="b1"]
(选择属性为id,值为b1的BBB元素)
2 使用dom4j支持XPATH操作
默认情况下,dom4j不支持xpath,如果想要在dom4j里面使用xpath,步骤如下:
(1)引入支持xpath的jar包:jaxen-1.2.0。
(2)将jar包导入项目。
在dom4j里面改提供了两个方法,用来支持xpath
|——selectNodes(“xpath expression”),获取多个节点
|——selectSingleNode(“xpath expression”),获取单一节点
查询xml中name元素的值。
|——//name
,所有name元素的xpath表示。
(1)得到document
(2)直接使用xpath得到所有name元素
public static void getName() {
Document document = getDocument();
List<Node> list = document.selectNodes("//name");
for(Node node : list) {
System.out.println(node.getText());
}
}
3 使用dom4j支持XPATH的操作
获取第一个p1下面name的值。
public static void getName() {
Document document = getDocument();
Node name1 = document.selectSingleNode("//p1[@id1='love']/name");
System.out.println(name1.getText());
}