XPath 语法
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 | 选择所有名为“bookstore”的节点 |
/bookstore | 选择根元素 bookstore |
注意: 如果路径以斜杠 ( / ) 开头,它始终表示元素的绝对路径! | bookstore/book |
选择 bookstore 的所有子元素 book | //book |
选择所有 book 元素,无论它们在文档中的什么位置
bookstore//book
选择 bookstore 元素的所有后代 book 元素,无论它们在 bookstore 元素下的什么位置
//@lang
.. | 选择当前节点的父节点 |
---|---|
选择所有名为 lang 的属性 | 谓词 谓词用于查找特定节点或包含特定值的节点。 谓词始终嵌入方括号中。 |
在下表中,我们列出了一些带有谓词的路径表达式及其结果 | /bookstore/book[1] |
选择 bookstore 元素的第一个子元素 book。 | 注意: 在 IE 5、6、7、8、9 中,第一个节点是 [0],但根据 W3C 标准,它是 [1]。为了解决 IE 中的这个问题,请将 SelectionLanguage 设置为 XPath |
在 JavaScript 中: xml.setProperty("SelectionLanguage","XPath"); | /bookstore/book[last()] |
选择 bookstore 元素的最后一个子元素 book | /bookstore/book[last()-1] |
选择 bookstore 元素的倒数第二个子元素 book | /bookstore/book[position()<3] |
选择 bookstore 元素的前两个子元素 book | //title[@lang] |
选择所有具有名为 lang 的属性的 title 元素 | //title[@lang='en'] |
选择所有具有值为“en”的“lang”属性的 title 元素
/bookstore/book[price>35.00]
选择 bookstore 元素中具有值大于 35.00 的 price 元素的 book 元素 | 描述 |
---|---|
* | /bookstore/book[price>35.00]/title |
@* | 选择 bookstore 元素中具有值大于 35.00 的 price 元素的 book 元素的所有 title 元素 |
选择未知节点 | XPath 通配符可用于选择未知的 XML 节点。 |
选择当前节点
.. | 选择当前节点的父节点 |
---|---|
通配符 | 匹配任何元素节点 |
//* | @* |
匹配任何属性节点 | node() |
匹配任何类型的任何节点
/bookstore/*
选择当前节点
.. | 选择当前节点的父节点 |
---|---|
选择 bookstore 元素的所有子元素节点 | 选择所有 book 元素中的所有 title 和 price 元素 |
//title | //price | 选择文档中所有 title 和 price 元素 |
/bookstore/book/title | //price | 选择 bookstore 元素中的 book 元素的所有 title 元素以及文档中的所有 price 元素 |