XPath 是 XML 路径语言(XML Path Language),用来确定XML文档中某部分位置的语言。无论是什么语言什么框架,几乎都可以使用 XPath 来高效查询 XML 文件。

路径
/package/metadata/id
这样的路径描述语法将可以找到 package 节点下的 metadata 节点下的 id 节点。
/package/metadata/*[1]
使用 * 可以找到任意名称,于是这样的路径描述语法将可以找到 metadata 下第一个节点,名称是任意的。
尤其要注意的是,XPath 的路径语法第一个节点从 1 开始,而不是 0。
/package//dependency
// 表示只要是前面节点的内部即可,无论中间经过了多少层。
如果把 // 写到了最前面,例如 //dependency,那么表示寻找任意位置的 dependency 节点。
其实,上面的那些语法都是简写形式的语法,如果将它们完整写出来,将是这样的形式:

/child::package/child::metadata/child::id
/child::package/child::metadata/child::node()[1]
/child::package/descendant-or-self::dependency
这里的 child、descendant-or-self 是轴描述语法,除了这两个,还有这些:

child
子节点 可以省略不写
attribute
属性 可以用 @ 来缩写
descendant
子孙节点
descendant-or-self
自身引用及子孙节点,可以用 // 来缩写
parent
父节点 可以用 … 来缩写
ancestor
祖先节点
ancestor-or-self
自身引用及祖先节点
following
在此节点后的所有完整节点,即不包含其祖先节点
preceding
在此节点前的所有完整节点,即不包含其子孙节点
following-sibling
下一个同级节点
preceding-sibling
上一个同级节点
self
自己 可以用 . 来缩写
namespace
命名空间
对于 attribute 的使用,例如 //repository/@type 查找任意位置的 repository 节点的 type 属性。

节点类型
在前面的路径中,我们已经使用了 node() 来寻找元素节点,除 node() 表达式之外,还有:

comment()
注释,也就是
text()
文字
processing-instruction()
XML 处理指令,也就是 <? 处理指令 ?>
node()
节点
节点内容
使用中括号来描述节点的内容。

例如 //repository[@type=‘git’] 用来查找任意位置的 repository 节点,并且它有一个 type 属性值为 git。

中括号是可以写多个的,例如:

//dependency[contains(@exclude, ‘Build’)][…/group/@targetFramework=’.NETStandard2.0’]/@id
这将查找所有满足这些条件 dependency 节点的 id 属性:
其 exclude 属性中包含 Build 字符串
其父节点为 group 且 targetFramework 属性为 .NETStandard2.0
运算符
/、//、… 这是前面描述的路径运算符
| 用于取两个节点查找结果的并集
例如 //licenseUrl | //projectUrl | //iconUrl 取任意位置的 licenseUrl、projectUrl 和 iconUrl 节点。
and、or
对两个条件取“与”或者“或”
not() 函数
对条件取“非”
+、-、*、div 以及 mod
加减乘除以及取余数
=、!=、<、>、<=、>=
比较相等或大小
更多函数
w3c 对 XPath 支持的函数有详细的查询页面,可以访问 XPath and XQuery Functions and Operators 3.1 查询。

XML 的 XPath 语法相关推荐

  1. C#操作xml之xpath语法

    以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的&quo ...

  2. Dom4j使用Xpath语法读取xml节点

    <span style="font-size: small;" mce_style="font-size: small;">package com. ...

  3. Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector

    The lxml.etree Tutorial :https://lxml.de/tutorial.html python3 解析 xml:https://www.cnblogs.com/deadwo ...

  4. XDocument读取xml的所有元素以及XPath语法

    XDocument读取xml的所有元素以及XPath语法 原文  http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version= ...

  5. Xpath语法(xml解析)

    Xpath语法 from lxml import etree # 需要下载lxml第三方模块 1.xpath基本概念 1)树:整个HTML(xml)代码结构就是一个树结构 2)节点:树结构中的每一个元 ...

  6. XPath语法 — 从XML文档树中摘果子

    项目中看到同事写的这样几句话: 1 string xmlStr = WeiXin.RedPack.GetCachred(user.OpenID, red, "爱西姆", " ...

  7. 爬虫之xpath语法-常用节点选择语法

    爬虫之xpath语法-常用节点选择语法 可以通过通配符来选取未知的html.xml的元素 1.1 选取未知节点的语法 通配符 描述 * 匹配任何元素节点. node() 匹配任何类型的节点. 1.2 ...

  8. 爬虫之 lxml模块和xpath语法

    爬虫之 lxml模块和xpath语法 对html或xml形式的文本提取特定的内容,就需要我们掌握lxml模块的使用和xpath语法. lxml模块可以利用XPath规则语法,来快速的定位HTML\XM ...

  9. Xpath语法-爬虫(一)

    前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...

最新文章

  1. 就是这么霸道,使用OpenCV10行代码实现人脸检测
  2. 30+的程序猿,路在何方?
  3. 使用机器学习方法预测IBM员工流失数据模型
  4. 十道常见的MyBatis 面试题
  5. spring mvc4 笔记
  6. sublime 3143 注册码
  7. 【计算机视觉-从入门到精通系列】 第一章 基础知识
  8. linux信号(二)--unix环境高级编程读书笔记
  9. vs2008激活、序列号
  10. 坚果pro2完美降回6.0.3卡刷包 完美恢复方法
  11. 电赛-风力摆控制系统
  12. linux 版的 wps 缺少字体的解决办法
  13. 010Editor的Template安装与使用
  14. android在体检报告叫什么,体检报告检测分析app
  15. 一个草根程序员如何进入BAT
  16. HTML中 <img>标签的用法
  17. mysql 高并发 响应时间_高并发,你真的了解吗?
  18. mysql自定义变量比较大小_MySQL 自定义变量@ 常用案例
  19. 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)考试试卷
  20. 如何使用CSS简单的制作一个视频网站

热门文章

  1. 反爬虫三:检测鼠标移动轨迹
  2. EMP v5.3 技术白皮书
  3. 2022秋-北邮计导期末考试(BUPT大一上)
  4. 我对新世相的刷屏海报并不感兴趣
  5. 关于谷歌chrome调试小技巧
  6. [构造]Array 2022牛客多校第6场 A
  7. 许家印的中秋行程单,恒大造车的“全球化”
  8. C++11 获取系统时间库函数 time since epoch
  9. playfair密钥矩阵加密--c语言
  10. 变长数组-C99新特性