XPath 语法
-
定义和使用
XPath 使用路径表达式来选择XML文档中的节点或节点集。通过遵循路径或步骤选择节点。在下面的示例中,我们将使用以下 XML 文档。<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book> <title lang="en">中国历史手册</title> <price>30.00</price> </book> <book> <title lang="en">学习 XML</title> <price>39.99</price> </book> </bookstore>
-
选择节点
XPath 使用路径表达式来选择 XML 文档中的节点;通过遵循路径或步骤选择节点;下面列出了最有用的路径表达式:表达式 描述 nodename 选择所有名称为 "nodename" 的节点 / 从根节点选择 // 从当前节点中选择匹配选择的节点,无论它们在何处 . 选择当前节点 .. 选择当前节点的父节点 @ 选择属性 在下表中,我们列出了一些路径表达式和表达式的结果:路径表达式 描述 bookstore 选择所有名称为 "bookstore" 的节点 /bookstore 选择根元素书店注意:如果路径以斜杠(/)开头,则始终表示元素的绝对路径!bookstore/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] 选择最后但只有一个book元素,它是bookstore元素的子元素 /bookstore/book[position()<3] 选择作为书店元素的子元素的前两个书元素 //title[@lang] 选择所有具有名为lang的属性的标题元素 //title[@lang='en'] 选择所有具有 “lang” 属性且值为 “en” 的标题元素 /bookstore/book[price>35.00] 选择书店元素中所有价格元素大于 35.00 的书元素 /bookstore/book[price>35.00]/title 选择书店元素的书元素的所有标题元素,它们的价格元素的价格大于35.00。 -
选择未知节点
XPath 通配符可用于选择未知的 XML 节点。通配符 描述 * 匹配任何元素节点 @* 匹配任何属性节点 node() 匹配任何种类的任何节点 在下表中,我们列出了一些路径表达式和表达式的结果:路径表达式 描述结果 /bookstore/* 选择书店元素的所有子元素节点 //* 选择文档中的所有元素 //title[@*] 选择至少具有任何一种属性的所有标题元素 -
选择几个路径
通过使用 | 在 XPath 表达式中,您可以选择多个路径。在下表中,我们列出了一些路径表达式和表达式的结果:路径表达式 描述结果 //book/title | //book/price 选择所有book元素的所有title和price元素 //title | //price 选择文档中的所有title和price元素 /bookstore/book/title | //price 选择bookstore元素的book元素的所有title元素以及文档中的所有price元素