XPath使用路径表达式在XML文档中选择节点或节点集。 该节点通过以下的路径或步骤选择。
XML实例文档
我们将使用下面的XML文档在下面的例子。
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
选择节点
XPath使用路径表达式在XML文档中选择节点。 该节点通过以下的路径或步骤选择。 最有用的路径表达式如下:
表达 | 描述 |
---|---|
nodename | 选择所有节点名称为“ nodename ” |
/ | 从根节点选择 |
// | 从选择符合选择当前节点的文档中的节点,无论他们在哪里 |
. | 选择当前节点 |
.. | 选择当前节点的父节点 |
@ | 选择属性 |
在下面的表格中我们列出了一些路径表达式以及表达式的结果:
路径表达式 | 结果 |
---|---|
书店 | 选择所有节点名为"bookstore" |
/书店 | 选择的根元素书店 Note:如果路径以斜线开始( / )它一定是到该元素的绝对路径! |
书店/书 | 选择所有book元素是书店的儿童 |
//书 | 选择所有book元素,无论他们在哪里文档中 |
书店//书 | 选择所有book元素是后代的书店元素,也不管他们在哪里书店元素 |
// @郎 | 选择被命名为郎所有属性 |
谓词
谓词用于查找特定的节点或包含特定值的节点。
谓语被嵌入在中括号。
在下表中,我们列出了一些谓词的路径表达式以及表达式的结果:
路径表达式 | 结果 |
---|---|
/书店/书[1] | 选择第一个book元素是书店元素的孩子。 Note:在IE 5,6,7,8,9第一节点是[0],但根据W3C,它是[1]。 为了解决IE这个问题,设置SelectionLanguage与XPath: In JavaScript: xml 。 setProperty("SelectionLanguage","XPath") ; |
/书店/书[ last() ] | 选择最后一个book元素是书店元素的子 |
/书店/书[ last() -1] | 选择倒数第二个book元素是书店元素的子 |
/书店/书[ position() <3] | 选择前两个book元素是书店元素的子 |
//标题[@lang] | 选择具有名为郎属性的所有title元素 |
//标题[@郎= 'EN'] | 选择具有与值的“lang”属性的所有title元素"en" |
/bookstore/book[price>35.00] | 选择具有价格元素与值bookstore元素的所有book元素大于35.00 |
/bookstore/book[price>35.00]/title | 选择具有价格元素与值bookstore元素的book元素的所有title元素大于35.00 |
选择未知节点
XPath的通配符可以用来选择未知的XML节点。
通配符 | 描述 |
---|---|
* | 匹配任何元素节点 |
@* | 匹配任何属性节点 |
node() | 匹配任何类型的节点 |
在下面的表格中我们列出了一些路径表达式以及表达式的结果:
路径表达式 | 结果 |
---|---|
/书店/* | 选择所有bookstore元素的子元素节点 |
// * | 选择文档中的所有元素 |
//标题[@*] | 选择其中有什么样的至少一个属性的所有title元素 |
选取多个路径
通过使用| 在XPath表达式可以选择多个路径。
在下面的表格中我们列出了一些路径表达式以及表达式的结果:
路径表达式 | 结果 |
---|---|
//书/标题| //书/价格 | 选择所有book元素的所有title和price元素 |
//标题| //价钱 | 选择文档中的所有title和price元素 |
/书店/书/标题| //价钱 | 选择bookstore元素的book元素和文档中的所有title元素的所有要素价格 |