现在的位置: 首页 > 综合 > 正文

xpath语法

2013年08月05日 ⁄ 综合 ⁄ 共 1473字 ⁄ 字号 评论关闭

作为例子的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/

 

抱歉!评论已关闭.