xpath语法

1. 基本路径表达式

node

选取当前节点的所有子节点(包括元素、文本、属性等)。

bookstore/book

//node

从任意位置选取节点(全局搜索)。

//book

.

选取当前节点。

.

..

选取当前节点的父节点。

book/..

@attribute

选取属性节点(@后接属性名)。

book/@category

2. 谓语(Predicates)

用于筛选节点,用方括号 [] 包裹条件:

bookstore/book[1]

选取第一个 <book>节点(XPath 索引从 1 开始)。

bookstore/book[last()]

选取最后一个 <book> 节点。

bookstore/book[price>35]

选取 <price> 元素值大于 35 的所有 <book>节点。

//book[@category='IT']

选取所有 category属性为 'IT'<book>节点。

//book[contains(@id, 'prod')]

选取 id属性包含 'prod'的所有 <book>节点。

3. 通配符

*

匹配任意元素节点。

bookstore/*

@*

匹配任意属性节点。

book/@*

node()

匹配任意类型的节点(元素、文本、注释等)。

//node()

4. 轴(Axes)

用于选取相对于当前节点的特定节点:

child

选取当前节点的所有子节点(默认轴,可省略)。

book/child::title

parent

选取当前节点的父节点。

title/parent::book

descendant

选取当前节点的所有后代节点(子节点、孙节点等)。

bookstore/descendant::title

ancestor

选取当前节点的所有祖先节点(父节点、祖父节点等)。

title/ancestor::bookstore

following-sibling

选取当前节点之后的所有同级节点。

book/following-sibling::book

preceding-sibling

选取当前节点之前的所有同级节点。

book/preceding-sibling::book

5. 运算符

and

逻辑与

//book[@price>20 and @price<50]

or

逻辑或

//book[@category='IT' or @category='Science']

+

加法

//book[price+tax>100]

=

等于

//book[@id=123]

!=

不等于

//book[@category!='IT']

实战示例

假设XML结构如下:

<bookstore>
  <book category="IT">
    <title lang="en">Java Programming</title>
    <price>49.99</price>
  </book>
  <book category="Science">
    <title lang="zh">量子物理导论</title>
    <price>69.99</price>
  </book>
</bookstore>

//book/title

所有 <title>节点(Java Programming、量子物理导论)。

//book[@category='IT']/price

类别为 IT 的书籍的 <price> 节点(49.99)。

//title[contains(text(), 'Java')]

文本包含 Java<title>节点。

//book[price>50]/title

价格超过50的书籍的 <title>节点(量子物理导论)。

总结

XPath 是定位 XML/HTML 节点的强大工具,核心语法可概括为:

  1. 路径选择/(子节点)、//(任意位置)、.(当前节点)、..(父节点)。
  2. 条件筛选:用 [] 加谓语(如 [position()=1][@attr='value'])。
  3. 轴与通配符:处理复杂关系(如 following-sibling)和模糊匹配(*)。

面试时可举例:“若要定位淘宝商品列表中价格大于100元的商品名称,可用 //div[@class='item']/span[price>100]/name。”

全部评论
太卷了白薯哥
点赞 回复 分享
发布于 昨天 17:00 广东
佬你们自动化用的技术栈有哪些?
点赞 回复 分享
发布于 06-18 10:27 广东

相关推荐

asodh:很久没有刷到过这种尸体暖暖的帖子了,你一定也是很优秀的mentor👍
点赞 评论 收藏
分享
评论
3
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务