个性化阅读
专注于IT技术分析

XPath语法

点击下载

本文概述

XPath表达式使用诸如URL之类的路径符号来寻址XML文档的各个部分。计算表达式以产生节点集, 布尔值, 数字或字符串类型的对象。例如, 如果book / author表达式在源XML文档中声明, 则该表达式将返回<book>元素中包含的<author>元素的节点集。

在XPath中, 路径表达式用于选择XML文档中的节点或节点集。通过遵循路径或步骤选择节点。

让我们来看一个XPath的语法示例。在这里, 我们获取一个XML文档。

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book>
  <title lang="en">Three Mistakes of My Life</title>
  <price>110</price>
</book>
<book>
  <title lang="en">Immortals of Meluha</title>
  <price>200</price>
</book>
</bookstore>

选择节点

用于选择节点的路径表达式为:

Index Expression Description
1) nodename 选择所有名称为” nodename”的节点
2) / 从根节点中选择。
3) // 无论位置在哪里, 都从当前节点中选择与选择匹配的节点。
4) . 选择当前节点
5) .. 选择当前节点的父节点
6) @ Selects attributes

请参阅以上示例中的路径表达式及其详细信息:

Path Expression Result
bookstore 选择所有名称为” bookstore”的节点
/bookstore 选择根元素书店。注意:如果路径以斜杠(/)开头, 则始终表示元素的绝对路径!
bookstore/book 选择所有作为书店子级的书本元素。
//book 选择所有书籍元素, 无论它们在文档中的位置如何。
bookstore//book 选择作为bookstore元素后代的所有book元素, 无论它们在bookstore元素下的位置如何。
//@lang 选择所有名为lang的属性。

谓词

谓词用于查找特定节点或包含特定值的节点。

谓词始终嵌入在方括号中。

在下表中, 我们列出了一些带有谓词的路径表达式以及表达式的结果:

路径表达 Result
/bookstore/book[1] 选择第一本书元素, 它是bookstore元素的子元素。注意:在IE 5, 6, 7, 8, 9中, 第一个节点是[0], 但根据W3C, 它是[1]。要解决IE中的此问题, 请将选择语言设置为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>100] 选择书店元素中所有价格元素大于100的书元素
/bookstore/book[price>100]/title 选择bookstore元素中book元素的所有title元素, 这些title元素的price元素的值大于100

选择未知节点

XPath通配符用于选择未知的XML节点。

Wildcard Description
* 匹配任何元素节点
@* 匹配任何属性节点
node() 匹配任何种类的任何节点

参见上面的示例:

Path Expression Result
/bookstore/* 选择书店元素的所有子元素节点
//* 选择文档中的所有元素
//title[@*] 选择至少具有任何一种属性的所有标题元素

选择几个路径

| XPath表达式中使用运算符选择多个路径。从上面的示例中, 我们列出了一些路径表达式和表达式的结果。

路径表达 Result
//书/标题| //书/价格 选择所有书籍元素的所有标题和价格元素
//标题| //价钱 选择文档中的所有标题和价格元素
/ bookstore / book / title | //价钱 选择bookstore元素的book元素的所有title元素以及文档中的所有price元素
赞(0)
未经允许不得转载:srcmini » XPath语法

评论 抢沙发

评论前必须登录!