XML 的 XPath 语法
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 语法相关推荐
- C#操作xml之xpath语法
以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的&quo ...
- Dom4j使用Xpath语法读取xml节点
<span style="font-size: small;" mce_style="font-size: small;">package com. ...
- Python 中 xpath 语法 与 lxml 库解析 HTML/XML 和 CSS Selector
The lxml.etree Tutorial :https://lxml.de/tutorial.html python3 解析 xml:https://www.cnblogs.com/deadwo ...
- XDocument读取xml的所有元素以及XPath语法
XDocument读取xml的所有元素以及XPath语法 原文 http://www.cnblogs.com/xxyishutong/p/3326375.html <?xml version= ...
- Xpath语法(xml解析)
Xpath语法 from lxml import etree # 需要下载lxml第三方模块 1.xpath基本概念 1)树:整个HTML(xml)代码结构就是一个树结构 2)节点:树结构中的每一个元 ...
- XPath语法 — 从XML文档树中摘果子
项目中看到同事写的这样几句话: 1 string xmlStr = WeiXin.RedPack.GetCachred(user.OpenID, red, "爱西姆", " ...
- 爬虫之xpath语法-常用节点选择语法
爬虫之xpath语法-常用节点选择语法 可以通过通配符来选取未知的html.xml的元素 1.1 选取未知节点的语法 通配符 描述 * 匹配任何元素节点. node() 匹配任何类型的节点. 1.2 ...
- 爬虫之 lxml模块和xpath语法
爬虫之 lxml模块和xpath语法 对html或xml形式的文本提取特定的内容,就需要我们掌握lxml模块的使用和xpath语法. lxml模块可以利用XPath规则语法,来快速的定位HTML\XM ...
- Xpath语法-爬虫(一)
前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...
最新文章
- 就是这么霸道,使用OpenCV10行代码实现人脸检测
- 30+的程序猿,路在何方?
- 使用机器学习方法预测IBM员工流失数据模型
- 十道常见的MyBatis 面试题
- spring mvc4 笔记
- sublime 3143 注册码
- 【计算机视觉-从入门到精通系列】 第一章 基础知识
- linux信号(二)--unix环境高级编程读书笔记
- vs2008激活、序列号
- 坚果pro2完美降回6.0.3卡刷包 完美恢复方法
- 电赛-风力摆控制系统
- linux 版的 wps 缺少字体的解决办法
- 010Editor的Template安装与使用
- android在体检报告叫什么,体检报告检测分析app
- 一个草根程序员如何进入BAT
- HTML中 <img>标签的用法
- mysql 高并发 响应时间_高并发,你真的了解吗?
- mysql自定义变量比较大小_MySQL 自定义变量@ 常用案例
- 2021年起重机司机(限桥式起重机)最新解析及起重机司机(限桥式起重机)考试试卷
- 如何使用CSS简单的制作一个视频网站