作为例子的XML文档
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
选取节点
XPath通过路径表达式在XML文档中选取节点。可以通过一条语句或相应的步骤选取一个节点。下面列出了最常使用的路径表达式:
Nodename 选取节点下的所有子节点
/ 选取根节点
// 选取文档中所有符合条件的节点,不管该节点在什么地方
. 当前节点
.. 当前节点的父节点
@ 选取属性
实例说明
根据本文首页上面的xml文档举例说明:
bookstore 选取bookstore元素的所有子节点
/bookstore 据对路径 选取bookstore元素的根节点
bookstore/book bookstore/book 下的所有子元素
//book 选取文档中的所有book元素
bookstore//book 文档中处于bookstore下的所有book元素
//@lang 所有lang属性
Predicates
条件 谓词
它指定了选取节点的范围。通常使用方括号[ ]来指定条件。
/bookstore/book[1] 选取bookstore节点下的第一个book元素
/bookstore/book[last()] bookstore下的最后一个book元素
/bookstore/book[last()-1] 倒数第二个book
/bookstore/book[position()<3] 选取前两个book元素
//title[@lang] 选取包含lang属性的所有title元素
//title[@lang=”eng”] lang属性为“eng”的所有title元素
/bookstore/book[price>35.] 选取bookstore节点下的所有包含price元素大于35.00的book元素
/bookstore/book[price>35.00]/title 选取bookstore节点下的所有包含price元素大于35.00的book节点下的title元素
选取未知节点
可以通过 XPath 通配符选取未知的XML元素。
* 匹配任意的节点元素
@* 任意的节点属性
node() 任意种类的节点
实例
/bookstore/* bookstore节点中的任意子节点元素
//* 选取文档中的所有元素
//title[@*] 选取包含任意属性的title元素
选取多个路径
你可以同过在表达式中添加 | 来选取多个路径。
实例
//bookt/title | //book/price 选取book节点中的所有title和price元素
//title | //price 文档中所有title和price元素
原文地址: http://www.w3pop.com/learn/view/p/1/doc/xpath_nodes/