1 引入
问题:当使用dom4j查询比较深的层次结构的节点(标签,属性,文本),比较麻烦!!!
2 xPath作用
主要是用于快速获取所需的节点对象。
3 在dom4j中如何使用xPath技术
1)导入xPath支持jar包 。 jaxen-1.1-beta-6.jar
2)使用xpath方法
List<Node> selectNodes("xpath表达式"); 查询多个节点对象
Node selectSingleNode("xpath表达式"); 查询一个节点对象
4 xPath语法
/ 绝对路径 表示从xml的根位置开始或子元素(一个层次结构)
// 相对路径 表示不分任何层次结构的选择元素。
* 通配符 表示匹配所有元素
[] 条件 表示选择什么条件下的元素
@ 属性 表示选择属性节点
and 关系 表示条件的与关系(等价于&&)
text() 文本 表示选择文本内容
代码练习:
package com.dom4j.xpath; import java.io.File; import java.util.List; import org.dom4j.Document; import org.dom4j.Node; import org.dom4j.io.SAXReader; public class xpathExercise { public static void main(String[] args) throws Exception { Document doc = new SAXReader().read(new File("./src/contact.xml")); String xpath = ""; xpath = "/contactList"; xpath = "//contact/name"; xpath = "//name"; xpath = "/*/*/age"; xpath = "/contactList/*"; xpath = "/contactList//*"; xpath = "//contact[@value]"; xpath = "//contact[@id]"; xpath = "//contact[2]"; xpath = "//contact[last()]"; xpath = "//@id"; xpath = "//contact[not(@id)]"; xpath = "//contact[@id='003' and @value='hello']"; xpath = "//name/text()";//返回ext xpath = "//contact/name[text()='张三']"; List<Node> list = doc.selectNodes(xpath); for(Node node : list){ System.out.println(node); } } }