【转】xPath语法介绍
在网上找到的,不过具体的作者并不知道。如果您看到了这篇文章,还请告诉我。我会补上您的版权信息。
以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的“sql”语句xpath。由于本系列帖子的目的不在于详细介绍xpath语法所以,我借用了园子里leves的帖子来简单介绍一下xpath语法:
XPath 是XML的查询语言,和SQL的角色很类似。以下面XML为例,介绍XPath 的语法。
<?xml version="1.0" encoding="ISO-8859-1"?>
<catalog>
<cd country="USA">
<title>Empire Burlesque</title>
<artist>Bob Dylan</artist>
<price>10.90</price>
</cd>
<cd country="UK">
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<price>9.90</price>
</cd>
<cd country="USA">
<title>Greatest Hits</title>
<artist>Dolly Parton</artist>
<price>9.90</price>
</cd>
</catalog>
定位节点
XML是树状结构,类似档案系统内数据夹的结构,XPath也类似档案系统的路径命名方式。不过XPath 是一种模式(Pattern),可以选出 XML档案中,路径符合某个模式的所有节点出来。例如要选catalog底下的cd中所有price元素可以用:
/catalog/cd/price
如果XPath的开头是一个斜线(/)代表这是绝对路径。如果开头是两个斜线(//)表示文件中所有符合模式的元素都会被选出来,即使是处于树中不同的层级也会被选出来。以下的语法会选出文件中所有叫做cd的元素(在树中的任何层级都会被选出来):
//cd
选择未知的元素
使用星号(Wildcards,*)可以选择未知的元素。下面这个语法会选出/catalog/cd 的所有子元素:
/catalog/cd/*
以下的语法会选出所有catalog的子元素中,包含有price作为子元素的元素。
/catalog/*/price
以下的语法会选出有两层父节点,叫做price的所有元素。
/*/*/price
以下的语法会选择出文件中的所有元素。
//*
要注意的是,想要存取不分层级的元素,XPath语法必须以两个斜线开头(//),想要存取未知元素才用星号(*),星号只能代表未知名称的元素,不能代表未知层级的元素。
选择分支
使用中括号可以选择分支。以下的语法从catalog的子元素中取出第一个叫做cd的元素。XPath的定义中没有第0元素这种东西。
/catalog/cd[1]
以下语法选择catalog中的最后一个cd元素:(XPathj并没有定义 first() 这种函式喔,用上例的 [1]就可以取出第一个元素。
/catalog/cd[last()]
以下语法选出含有price子元素的所有/catalog/cd元素。
/catalog/cd[price]
以下语法选出price元素的值等于10.90的所有/catalog/cd元素
/catalog/cd[price=10.90]
以下语法选出price元素的值等于10.90的所有/catalog/cd元素 的price元素
/catalog/cd[price=10.90]/price
选择一个以上的路径
使用Or操作数(|)就可以选择一个以上的路径。例如:
/catalog/cd/title | catalog/cd/artist
选择所有title以及artist元素
//title | //artist
选择所有title以及artist以及price元素
//title | //artist | //price
选择属性
在XPath中,除了选择元素以外,也可以选择属性。属性都是以@开头。例如选择文件中所有叫做country的属性:
//@country
选择所有含有country这个属性的cd元素:
//cd[@country]
以下语法选择出含有属性的所有cd元素
//cd[@*]
以下语法选择出country属性值为UK的cd元素
//cd[@country='UK']
只要掌握了xpath语法,理论上你就可以访问xml文件中的任意节点和任意值
2012-4-24新增:
如果需要根据节点的值来进行查找,可以使用contains函数。例如选择所有artist节点里面包含B的节点
//artist[contains(text(),'B')] 其中text()为artist的值
转载于:https://www.cnblogs.com/qianlifeng/archive/2010/04/26/1721459.html
【转】xPath语法介绍相关推荐
- 〖Python网络爬虫实战⑫〗- XPATH语法介绍
订阅:新手可以订阅我的其他专栏.免费阶段订阅量1000+ python项目实战 Python编程基础教程系列(零基础小白搬砖逆袭) 说明:本专栏持续更新中,目前专栏免费订阅,在转为付费专栏前订阅本专栏 ...
- python xpath爬虫_Python爬虫(2):XPath语法
OK,上次我们说到了网页爬虫的一个思路:首先说一下网页爬虫的整个思路方法:先爬取整个网页,也就是将网页的源代码给获取下来 爬取下来的网页再通过文本解析提取,找到我们需要的信息,可以是图片或者文字 然后 ...
- Python爬虫xpath语法及案例使用
Python爬虫之xpath语法及案例使用 ---- 钢铁侠的知识库 2022.08.15 我们在写Python爬虫时,经常需要对网页提取信息,如果用传统正则表达去写会增加很多工作量,此时需要一种对数 ...
- python xpath语法-Python爬虫基础之XPath语法与lxml库的用法详解
前言 本来打算写的标题是XPath语法,但是想了一下Python中的解析库lxml,使用的是Xpath语法,同样也是效率比较高的解析方法,所以就写成了XPath语法和lxml库的用法 XPath 即为 ...
- python xpath语法-python xpath 基本用法
发布时间: pythonercn 8 months, 3 weeks ago 在进行网页抓取的时候,分析定位html节点是获取抓取信息的关键,目前我用的是lxml模块(用来分析XML文档结构的,当然也 ...
- python的xpath用法_python之Xpath语法
python视频教程栏目介绍python的Xpath语法. 一.XMl简介 (一)什么是 XMLXML 指可扩展标记语言(EXtensible) XML 是一种标记语言,很类似 HTML. XML 的 ...
- XPath语法 在C#中使用XPath例子与用法
XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识. 示例Xml: <?xml version="1.0" en ...
- C#操作xml之xpath语法
以前也发过关于.net中操作XML的帖子,但不是很详细,现在我将详细介绍一下c#如何操作xml文件,正如学习操作数据库要学习SQL语言一样,在学习操作xml与语言之前,我们要先熟悉一下xml的&quo ...
- Python 爬虫利器三之 Xpath 语法与 lxml 库的用法
原文链接https://cuiqingcai.com/2621.html 前言 前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxm ...
最新文章
- centos安装python3小白_Centos7 安装Python3
- 嵌入式烤箱能不能放台面上_2021年开放式厨房怎么设计?先来做做嵌入式家电的功课吧!...
- Python 单元测试详解
- 电脑怎么重置host_电脑又双叒叕卡顿?究竟要“重装”还是“重置”?原来这区别大了...
- 从头开始写框架(二):孕育框架的种子_中
- ORACLE多表关联的update语句
- win10 Eprime 2.0安装记录
- 万恶的ie(还好只是ie11)
- 皮克定理(计算多边形面积)
- 架构系列---QR二维码和扫描二维码登陆原理
- 矩阵代数(四)- 分块矩阵
- 个人开公司的流程及费用
- Office Word中由于自定义了新的样式名称,而导致题注显示:错误!文档中没有指定的样式文字
- react 的 render 函数
- Excel数据透视表排序
- Webpack打包css文件-css-loader+style-loader
- 初次来到博客园进行交流学习还请大家多指教!
- Squirrel and chestnut CodeChef - SQUIRREL
- 一些觉得不错的国外Mooc课程
- 【vcpkg】下载软件包时的提示
热门文章
- 接口返回500一般是什么错_什么情况下?超过了500万元的销售额标准,也不用办理一般纳税人资格认定?...
- (5)ISE14.7 开发流程(FPGA不积跬步101)
- (99)利用任务task实现单字节乘法功能,面试必问(二十三)(第20天)
- (73)FPGA模块调用(VHDL调用system Verilog)
- 5G时代FPGA需求分析
- FPGA复位方法总结
- 箭头 运算符_Java 运算符
- 2024.常见一些设计类模板
- 机票预定系统类图_出行干货|在法国,廉价机票攻略
- 并行计算(二)——通讯