XPath
XPath:路径表达式
xpath是一门在xml文档中查找信息的语言,xpath可用来
在xml文档中对元素或属性进行遍历
有了xpath就解决了逐层遍历
xpath是用网络路径表达式在xml文档中进行导航(快速查找)
xpath包含一个标准函数库
xpath是xslt中的主要元素
xpath是w3c标准
路径表达式:
-斜杠(/)作为路径的分隔符
-导航到同样一个节点,有相对路径和绝对路径两种
绝对路径:必须从"/"起始,后面紧跟节点
比如:/list/employee
相对路径:以当前路径作为起始点
比如: employee/name
-"."表示当前节点
-".."表示当前节点的父节点
-nodename(节点名称):表示该节点的所有子节点
-"/" 表示跟节点
-"//" 表示选择任意位置的某个节点
-"@" 表示选择某个属性
以下面xml的文档为例:
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<book>
<title lang="eng">harry potter</title>
<price>39.9</price>
</book>
<book>
<title lang="eng">learning XML</title>
<price>59.9</price>
</book>
</bookstore>
/bookstore 选取跟节点bookstore,这是绝对路径
bookstore/book 选取所有属于bookstore的子元素book元素
相对路径
//book 选取所有book子元素,而不管他们在文档中的位置
bookstore//book 选取所有属于bookstore元素的后代的
book的元素
而不管他们位于bookstore之下什么位置
//@lang 选取所有名为lang的属性
谓语:
谓语条件,就是对路径表达式的附加条件
所有的条件,都写在[]中,表示对节点的进一步筛选
/bookstore/book[1] 表示选择bookstore的第一个book子元素
/bookstore/book[last()] 表示bookstore的最后一个book子元素
/bookstore/book[last()-1] 表示bookstore的倒数第二个book子元素
/bookstore/book[position()<3] 表示选择bookstore的
前两个book子元素
//title[@lang] 表示选择所有具有lang属性的title节点
//title[@lang='eng'] 表示所有具有lang属相,
且值等于eng的title节点
//bookstore/book[price] 表示选择bookstore的book子元素
且被选中的book子元素必须带有price子元素
/booksstore/book[price>35.0] 表示选择bookstore的
book子元素,且选中的book子元素的price
的子元素值必须大于35.0
/bookstore/book[price>35.0]/title
表示在上面的例子结果中选择title子元素
/bookstore/book/price[.>35.0]
表示选择值大于35.0的/bookstore/book的
price子元素
通配符:
* 表示匹配任何子元素
@ 表示匹配任何属性
node() 表示匹配任何类型节点
//* 选择文档中的所有元素节点
/*/* 表示选择所有第二层的元素节点
/bookstore/* 表示选择bookstore的所有子元素节点
//title[@*] 表示选择所有带有属性的title元素
要想使用xpath必须引入第三方的jar包
jaxen-xx-xx.jar
使用xpath的api
List SelectNodes(String xpath);
根据xpath的参数获取xpath指定节点的信息