Xpath是一门在XML文档中查找信息的语言。Xpath可用来在XML文档中对元素和属性进行遍历。XPath是W3C XSLT标准的主要元素。并且XQuery和XPoint都构建于XPath表达式之上。
XPath使用路径表达式来选取XML文档中的节点或者节点集。这些路径表达式和我们在常规电脑文件系统中看到的表达式非常的相似。
在XPath中,一共有7中节点:元素,属性,文本,命名空间,处理器指令,注释及文档节点(或被成为根节点)。
XML文档被作为节点树来对待。树的根被称为文档节点或者根节点。
请看下面这个 XML 文档:
<?xml version="1.0" encoding="ISO-8859-1"?> <bookstore> <book> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> </bookstore>
上面的XML文档中的节点例子:
<bookstore> (文档节点,根节点) <author>J K. Rowling</author> (元素节点) lang="en" (属性节点)
下面列出了几个常用的路径表达式:
nodename | 选取此节点的所有子节点。 | bookstore | 选取bookstore元素的所有子节点 |
/ | 从根节点选取,选取整个文档 | /bookstore | 选取根元素bookstore.如果路径由(/)开始,则此路径代表绝对路径 |
// | 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置 | //book | 选取所有book子元素,不管他们在文档中的位置 |
。 | 选取当前节点 | ||
。。 | 选取当前节点的父节点 | bookstore//book | 选择属于 bookstore 元素的后代的所有 book 元素,而不管它们位于 bookstore 之下的什么位置。 |
@ | 选取属性 | //@lang | 选取名为lang的所有属性 |
谓语
谓语用来查找某一个特定的节点或者包含某个指定的值的节点。通常谓语被嵌在方括号中。
路径表达式 | 结果 |
/bookstore/book[1] | 选取属于bookstore子元素的第一个book元素 |
/bookstore/book[last()] | 选取属于bookstore子元素的最后一个book元素 |
/bookstore/book[lase()-1] | 倒数第二个book元素 |
/bookstore/book[position()<3] | 前两个元素 |
//title[@lang="eng"] | 选取所有属性值lang=eng的title元素 |
/bookstore/book[price>35]/title | 选取price大于35的title |