XPath
查询返回的集合在定义的范围内保留文档顺序
、层次结构和标识。也就是说,按照文档顺序返回元素集合,没有重复的元素
。因为根据定义,属性不排序
,所以,为特定元素返回的属性不进行明确地排序。
具有特定标记名的所有元素的集合使用标记名本身表示。限定方法可以通过使用句点和正斜杠 (./
)
表明元素是从当前上下文中选择,但是默认情况下将使用当前上下文,不必明确说明
。
示例:
表达式
引用
./first-name
|
所有 <first-name>
元素。注意,此表达式等效于后面的表达式。
|
first-name
|
所有 <first-name>
元素。
|
为集合编制索引
使用 XPath 表达式可以很容易在节点集中查询特定的节点。只需为索引序号加上方括号。序号从 1 开始(第一个元素是编号 1)。
方括号字符 ([]
) 的优先级高于斜杠字符(/
和 //
)。有关更多信息,请参见运算符和特殊字符
。
示例:
表达式
引用
author[1]
|
第一个 <author>
元素。
|
author[first-name][3]
|
具有 <first-name>
子元素的第三个 <author>
元素。
|
注意,索引相对于筛选的节点集。下表显示如何选择特定的 <x>
和 <y>
元素:
x/y[2]
每个
<x>
中的第二个
<y>
,可选择多个。
|
(x/y)[2]
<x>
与
<y>
组成的整个集合元素集的第三个
<y>
,有且仅有一个。
|
x[2]/y[2]
第二个
<x>
中的第二个
<y>
,也有且仅有一个。
|
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
|
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
|
<x>
<y/>
<y/>
</x>
<x>
<y/>
<y/>
</x>
|
上面的示例简单地引用使用暗示默认值(例如 child::
轴)的 XPath
集合。对于此轴,子节点集合按照前向文档顺序编制索引。
对于其他轴(例如 ancestor::
),在 XPath
表达式中需明确使用轴名。对于此轴,上级集合按照后向文档顺序编制索引。从上表中考虑此示例:
x/y[1]
此表达式等效于以下表达式:
x/child::y[1]
两个表达式均意味着“对每个 <x>
元素选择第一个名为 <y>
的子元素”。
下面的示例使用了相同的语法。
x/y/ancestor::x[1]
此示例意味着“对每个 <y>
元素选择第一个名为
<x>
的祖先元素(按照后向文档顺序)”。语法相同但是顺序相反。
查找集合中的最后一个元素
last()
函数对集合中的最后一个元素返回 True。注意,last
相对于父节点。
示例:
表达式
引用
book[last()]
|
最后一个 <book>
元素。
|
book/author[last()]
|
每个 <book>
元素中的最后一个 <author>
元素。
|
(book/author)[last()]
|
<book>
元素中整个 <author>
元素集的最后一个
<author>
元素。
|
分组
为了清楚起见,或正常的优先级不足以表达某个运算,可以使用括号为集合运算符分组。分组运
算符可以在任何筛选表达式(谓词)中使用,例如
author[(degree or award)and publication]
。也可以在顶级步长表达式中使用,例如
(book|magazine)
或 (author/degree |
book/award)
。不能应用于低级步长表达式。例如,author/(degree | award)
无效。但另外
(book |
magazine)/price是可以的,因为分组括号用在了第一级步长。
示例:
表达式
引用
(book/author)
|
属于当前上下文节点中任何 <book>
元素的子元素的所有 <author>
元素。
|
author[(degree or award) and publication]
|
至少包含一个 <degree>
或 <award>
元素以及至少包含一个
<publication>
元素的所有 <author>
元素。
|
分享到:
相关推荐
XPath的语法基础: 1. **节点类型**:XPath定义了七种基本的节点类型,包括元素(element)、属性(attribute)、文本(text)、命名空间(namespace)、处理指令(processing-instruction)、注释(comment)以及...
通过这些基本语法,我们可以编写XPath表达式来精确地查找XML文档中的特定部分。例如,在给定的XML文档中,我们可以找到每个国家的名称: ```python root = ET.fromstring(xml_string) for country in root.findall...
XPath语法包括路径表达式、轴表达式、节点测试、谓语表达式等。路径表达式可以结合轴、节点测试和谓语来选取特定节点。谓语通常用于过滤节点集,例如`[条件]`。 7. **运算符** XPath支持多种运算符,包括比较...
下面我们将详细探讨XPath语法及其在XML开发中的应用。 1. **XPath的基本概念** - **节点**:XML文档由一系列节点构成,如元素(element)、属性(attribute)、文本(text)、命名空间(namespace)、处理指令...
### C#操作XML之XPath语法详解 在C#中,操作XML文档是一项常见的任务,尤其在处理配置文件、数据交换格式或集成不同系统时。为了有效地解析和查询XML数据,XPath成为了一种不可或缺的语言。本文将深入探讨XPath的...
"XPath路径表达式详解" XPath 是 W3C 的一个标准,旨在在 XML1.0 或 XML1.1 文档节点树中定位节点。XPath 路径表达式是一种表达式语言,返回值可能是节点、节点集合、原子值或节点和原子值的混合等。XPath2.0 是 ...
### XPath语法与函数详解 #### XPath简介 XPath是一种在XML文档中查找信息的语言,它用于在复杂的XML结构中定位特定的元素或属性。XPath对于理解并操作XML文档至关重要,尤其在XSLT转换、XQuery查询及XPointer定位...
XPath 详解总结 XPath 是 W3C 的一个标准,主要目的是为了在 XML1.0 或 XML1.1 文档节点树中定位节点所设计。XPath 是一种表达式语言,返回值可能是节点、节点集合、原子值、节点和原子值的混合等。 XPath 路径...
### XPath详解 #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言。它用于在XML树结构中导航,并且能够返回所匹配节点或节点集。XPath的强大之处在于其简洁性和灵活性,允许用户轻松地从复杂的XML文档中...
XPath 详解总结 XPath 是 W3C 的一个标准,它的主要目的是为了在 XML 文档节点树中定位节点。XPath 有两种版本:XPath1.0 和 XPath2.0。XPath2.0 是 XPath1.0 的超集,支持更加丰富的数据类型,并且保持了对 XPath...
### XPath简单语法详解 #### 一、XPath简介 XPath是一种在XML文档中查找信息的语言,类似于HTML中的CSS选择器或SQL中的查询语句。XPath能够快速定位到XML文档中的某个节点或者一组节点,并且可以用来抽取节点数据...
首先,XPath 是一种在XML文档中查找信息的语言,其语法和功能非常丰富。在Selenium中,XPath可以用来定位页面上的元素,如按钮、链接、输入框等。以下是一些基本的XPath定位方法: 1. **基于标签名**:通过元素的...
主要给大家介绍了关于Python爬虫基础之XPath语法与lxml库用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
XPath提供了丰富的语法和函数库,能够精确地定位XML文档中的元素和属性,使得数据检索和处理变得高效和灵活。作为W3C(World Wide Web Consortium)的标准,XPath广泛应用于各种XML相关的技术中,如XSLT、XML Schema...
总的来说,XPath是XML和HTML解析的重要工具,熟练掌握XPath语法和使用方式对于进行数据抓取和处理,尤其是在网络爬虫领域,具有至关重要的作用。通过`lxml`库,我们可以轻松地在Python中利用XPath进行文档的解析和...
### QML语法详解 #### 一、QML简介 QML(Qt Meta Language)是一种用于构建用户界面的声明性语言,它与JavaScript紧密结合,能够轻松地实现动态效果和复杂的交互逻辑。QML的设计理念旨在简化界面开发过程,使得...
### Xpath提取网页数据知识点详解 #### 一、Xpath简介 Xpath是一种查询语言,主要用于在XML文档中查找信息。它可以轻松地在XML文档中通过元素和属性进行导航。虽然Xpath最初是为了处理XML而设计的,但它同样适用于...
**JSoup与XPath详解** JSoup是一个用于Java的开源库,设计目的是为了处理HTML文档,提取和操作数据。它的核心功能在于提供了一种简洁而强大的API,使得开发者能够方便地解析、遍历以及修改HTML文档。JSoup可以理解...