XPath 语法笔记

XPath 语法笔记

  • XPath 表达式
    • 1. 选择所有本地名称为特定名称的元素
    • 2. 选择具有特定属性的元素
    • 3. 选择属性值不等于特定值的元素
    • 4. 选择元素内容中包含特定字符串的节点
    • 5. 选择元素内容中不包含特定字符串的节点
    • 6. 选择特定命名空间内的元素
    • 7. 选择元素的属性
    • 8. 选择元素的所有属性
    • 9. 选择所有子孙元素
    • 10. 选择当前节点的父节点
    • 注意事项
  • 参考资料

XPath 表达式

1. 选择所有本地名称为特定名称的元素

  • 表达式: //*[local-name()='elementName']
  • 示例: 若要选择所有本地名称为sym的元素,可以使用.//*[local-name()='sym']

2. 选择具有特定属性的元素

  • 表达式: //*[local-name()='elementName' and @attributeName='value']
  • 示例: 若要选择所有本地名称为symw:font属性值为"Arial"的元素,可以使用.//*[local-name()='sym' and @w:font='Arial']

3. 选择属性值不等于特定值的元素

  • 表达式: //*[local-name()='elementName'][not(@attributeName='value')]
  • 示例: 若要选择所有本地名称为symw:font属性值不为"Arial"的元素,可以使用.//*[local-name()='sym'][not(@w:font='Arial')]

4. 选择元素内容中包含特定字符串的节点

  • 表达式: //*[contains(text(), 'string')]
  • 示例: 若要选择所有内容中包含单词example的段落,可以使用//p[contains(text(), 'example')]

5. 选择元素内容中不包含特定字符串的节点

  • 表达式: //*[not(contains(text(), 'string'))]
  • 示例: 若要选择所有内容中不包含单词example的段落,可以使用//p[not(contains(text(), 'example'))]

6. 选择特定命名空间内的元素

  • 表达式: //namespace:elementName
  • 示例: 若要选择http://schemas.openxmlformats.org/wordprocessingml/2006/main命名空间下的所有sym元素,可以使用//w:sym,其中w命名空间必须在XPath引擎中被正确声明。

7. 选择元素的属性

  • 表达式: //*[local-name()='elementName']/@attributeName
  • 示例: 若要选择所有sym元素的w:char属性,可以使用.//*[local-name()='sym']/@w:char

8. 选择元素的所有属性

  • 表达式: //*[local-name()='elementName']/@*
  • 示例: 若要选择所有sym元素的所有属性,可以使用.//*[local-name()='sym']/@*

9. 选择所有子孙元素

  • 表达式: //elementName
  • 示例: 若要选择文档中所有的p元素,无论它们处于哪个层级,可以使用//p

10. 选择当前节点的父节点

  • 表达式: ..
  • 示例: 如果当前节点是<p>...</p>,那么..将指向包含它的父节点。

注意事项

  • 当使用命名空间时,确保在XPath引擎中正确声明命名空间的前缀和URI。
  • .代表当前节点,..代表当前节点的父节点。
  • @*选择所有属性。
  • 使用local-name()函数时,XPath会忽略命名空间,只考虑元素的本地名称。

参考资料

XPath 1.0 规范: https://www.w3.org/TR/xpath/
XPath 2.0 规范: https://www.w3.org/TR/xpath-20/
XPath 3.1 规范: https://www.w3.org/TR/xpath-31/

菜鸟教程 XPath 参考手册 - 语法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/366921.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python自动化运维--DNS处理模块dnspython

1.dnspython介绍 dnspython是Pyhton实现的一个DNS工具包&#xff0c;他几乎支持所有的记录类型&#xff0c;可以用于查询、传输并动态更新ZONE信息&#xff0c;同事支持TSIG&#xff08;事物签名&#xff09;验证消息和EDNS0&#xff08;扩展DNS&#xff09;。在系统管理方面&a…

从零开始实现大语言模型(二):文本数据处理

1. 前言 神经网络不能直接处理自然语言文本&#xff0c;文本数据处理的核心是做tokenization&#xff0c;将自然语言文本分割成一系列tokens。 本文介绍tokenization的基本原理&#xff0c;OpenAI的GPT系列大语言模型使用的tokenization方法——字节对编码(BPE, byte pair en…

认识一下HttpMessageHandler处理管道

[S1208]HttpClient的默认管道结构 接下来我们通过如下的演示程序使用IHttpClientFactory工厂创建了 一个HttpClient对象&#xff0c;并查看其管道依次由哪些类型的HttpMessageHandler对象组成。如代码片段所示&#xff0c;我们定义了一个辅助方法PrintPipeline方法以递归的形式…

C++ ariac2 Windows库编译

cd "F:\\aria2" gmp-6.1.2.tar.lz expat-2.2.0.tar.bz2 sqlite-autoconf-3160200.tar.gz zlib-1.2.11.tar.gz c-ares-1.12.0.tar.gz libssh2-1.8.0.tar.gz --enable-libaria2 --enable-static libgnutls-dev&#xff08;对于HTTPS&#xff0c;BitTorrent&#xff0…

vue+js实现鼠标右键页面时在鼠标位置出现弹窗

首先是弹窗元素 <div class"tanchuang move-win1"id"tanchuang1"><el-button>111</el-button></div>然后在需要弹窗的地方监听点击事件&#xff0c;可以将这个方法写在页面载入事件中 // 获取弹窗元素 var tanchuang document.…

【开发篇】明明配置跨域声明,为什么却仍可以发送HTTP请求

一、问题 在SpringBoot项目中&#xff0c;明确指定仅允许指定网站跨域访问&#xff1a; 为什么开发人员却仍旧可以通过HTTP工具调用接口&#xff1f; 二、为什么 在回答这个问题之前&#xff0c;我们首先要了解一下什么是CORS&#xff01; 1、什么是CORS CORS的全称为跨域资源…

springcloud-config服务器,同样的配置在linux环境下不生效

原本在windows下能争取的获取远程配置但是部署到linux上死活都没有内容&#xff0c;然后开始了远程调试&#xff0c;这里顺带讲解下获取配置文件如果使用的是Git源&#xff0c;config service是如何响应接口并返回配置信息的。先说问题&#xff0c;我的服务名原本是abc-abc-abc…

文生图功能介绍

Stable Diffusion WebUI&#xff08;SD WebUI&#xff09;及文生图功能介绍 一、引言 随着人工智能技术的飞速发展&#xff0c;AI绘画作为一种新兴的艺术形式&#xff0c;逐渐走入人们的视野。Stable Diffusion WebUI&#xff08;简称SD WebUI&#xff09;作为AI绘画领域的重…

Rust: polars行遍历,从dataframe到struct及Bar设计比较

pandas提供了iterrows()、itertuples()、apply等行遍历的方式&#xff0c;还是比较方便的。 polars的列操作功能非常强大&#xff0c;这个在其官网上有详细的介绍。由于polars底层的arrow是列存储模式&#xff0c;行操作效率低下&#xff0c;官方也不推荐以行方式进行数据操作。…

通过shell脚本创建MySQl数据库

通过shell脚本创建数据库 #!/bin/bashserverIP10.1.1.196 SERVER_NAMEecho $serverIP | cut -d . -f4cat<<EOF>db.sql drop database if exists ${SERVER_NAME}_scheduler; drop database if exists ${SERVER_NAME}_kms; drop database if exists ${SERVER_NAME}_uim…

修改CentOS7 yum源

修改CentOS默认yum源为阿里镜像源 备份系统自带yum源配置文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 下载ailiyun的yum源配置文件 CentOS7 yum源如下&#xff1a; wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun…

【0299】Postgres内核之哈希表(Hash Tables)

0. 哈希表(Hash Tables) 哈希表是 一种用于存储键值对的数据结构。与使用索引号访问元素的基本数组不同,哈希表使用键来查找表条目。这使得数据管理对于用户来说更易于管理,因为按属性对数据条目进行分类比按它们在一个巨大的列表中的数量更容易。 在 C++ 中,我们将哈希…

单向链表结构

链表结构简介 链表结构是一种用比较特殊的数据结构类型&#xff0c;它也是线性数据结构中的一种&#xff0c;但是与栈结构等线性数据结构不同&#xff0c;它的内部结构并不是一个简单的存储空间&#xff0c;而是一个带有指向性质的单元。要理解链表结构要弄清楚两个问题&#x…

鸿蒙:路由Router原理

页面路由&#xff1a;在应用程序中实现不同页面之间的跳转和数据传递 典型应用&#xff1a;商品信息返回、订单等多页面跳转 页面栈最大容量为32个页面&#xff0c;当页面需要销毁可以使用router.clear()方法清空页面栈 router有两种页面跳转模式&#xff1a; router.pushUrl…

入门Axure:快速掌握原型设计技能

2002 年&#xff0c;维克托和马丁在旧金山湾区的一家初创公司工作&#xff0c;发现自己一再被软件开发生命周期的限制所困扰&#xff0c;而且产品团队在编写规范之前很难评估他们的解决方案&#xff0c;开发人员经常不理解&#xff08;或不阅读&#xff09;给出的规范&#xff…

线程池666666

1. 作用 线程池内部维护了多个工作线程&#xff0c;每个工作线程都会去任务队列中拿取任务并执行&#xff0c;当执行完一个任务后不是马上销毁&#xff0c;而是继续保留执行其它任务。显然&#xff0c;线程池提高了多线程的复用率&#xff0c;减少了创建和销毁线程的时间。 2…

如何指定Microsoft Print To PDF的输出路径

在上一篇文章中&#xff0c;介绍了三种将文件转换为PDF的方式。默认情况下&#xff0c;在Microsoft Print To PDF的首选项里&#xff0c;是看不到输出路径的设置的。 需要一点小小的手段。 运行输入 control 打开控制面板&#xff0c;选择硬件和声音下的查看设备和打印机 找到…

ardupilot开发 --- 坐标变换 篇

Good Morning, and in case I dont see you, good afternoon, good evening, and good night! 0. 一些概念1. 坐标系的旋转1.1 轴角法1.2 四元素1.3 基于欧拉角的旋转矩阵1.3.1 单轴旋转矩阵1.3.2 多轴旋转矩阵1.3.3 其他 2. 齐次变换矩阵3. visp实践 0. 一些概念 相关概念&am…

github仓库的基本使用-创建、上传文件、删除

1.第一步 先点击左侧菜单栏的远程仓库 2.点击NEW 3.创建仓库 然后点击右下角的 CREATE 4.点击code 点击SSH,然后我出现了You don’t have any public SSH keys in your GitHub account. You can add a new public key, or try cloning this repository via HTTPS. 1&#xff…

你喜欢波段交易吗?

波段交易的核心在于精准捕捉市场中的长期趋势波动&#xff0c;以实现更为稳健的收益。与剥头皮和日内交易不同&#xff0c;波段交易者更倾向于持有交易头寸数日乃至数周&#xff0c;以更宽广的视角把握市场动态。 这种交易方式的优势在于&#xff0c;它降低了对即时市场反应的…