XPath - XML 路径语言 (XML Path Language)

XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的计算机语言

XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初XPath的提出的初衷是将其作为一个通用的、介于XPointerXSL间的语法模型。但是XPath很快的被开发者采用来当作小型查询语言

语法

  • 斜杠(/)作为路径内部的分割符。
  • “.” 表示当前节点。
  • “..” 表示当前节点的父节点
  • nodename(节点名称):表示选择该节点的所有子节点
  • “/“:表示选择根节点
  • “//“:表示选择任意位置的某个节点
  • “@”: 表示选择某个属性
  • “*”: 表示匹配任何元素节点
  • “@*”: 表示匹配任何属性值

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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>
表达式 说明
bookstore 选取所有 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子元素
/bookstore/book[price>35.00] 表示选择bookstore的book子元素,且被选中的book元素的price子元素值必须大于35
/bookstore/book[price>35.00]/title 表示在例14结果集中,选择title子元素
/bookstore/book/price[.>35.00] 表示选择值大于35的”/bookstore/book”的price子元素
//* 选择文档中的所有元素节点
// 表示选择所有第二层的元素节点
/bookstore/* 表示选择bookstore的所有元素子节点
//title[@*] 表示选择所有带有属性的title元素
//book/title | //book/price 表示同时选择book元素的title子元素和price子元素

参考

0%