Xpath语法学习
贴几个我学习Xpath的参考
1 基本使用的参考
2 较为详细且清晰例子参考,推荐
3 详细语法参考
4 官方参考
XML中有几种符号需要使用转义字符,分别是:
实体值字符串 特殊字符
& &
< <
> >
" "
' '
说明:
1、实体的引用过到“&”来引用,末尾要加“;”。
2、XML文档中,以上5个特殊字符以实体值字符串形式出现。
自己用过的例子:
1 查找VirtualMachineSnapshotInfo节点下,任意一个VirtualMachineSnapshot节点
VirtualMachineSnapshotInfo//VirtualMachineSnapshot
2 选择多个并列的路径,用“|”
VirtualMachineSnapshotInfo//id|VirtualMachineSnapshotInfo//name
3 选取节点值为某某的节点,并取该节点的父节点的相关值
/A/B[.='AAA']
VirtualMachineSnapshotInfo//VirtualMachineSnapshot[.='snapshot-2309']/parent::node()/id
其中//VirtualMachineSnapshot[.='snapshot-2309']是获取VirtualMachineSnapshot节点为snapshot-2309的节点
或
//VirtualMachineSnapshot[VirtualMachineSnapshot='snapshot-2309']
4 获取属性的值
<entry id="000000000000002">
<field name="EsxiName">10.200.236.4</field>
</entry>
要获取上面的id值,需用://entry//@id
5 xpath解析带命名空间前缀的xml
样例xml如下,需要解析出Time Machine的值:
<bk:BookStore xmlns:bk="http://www.bookstore.com/book#">
<bk:Books>
<bk:Book id=">Time Machine</bk:Book>
</bk:Books>
</bk:BookStore>
解析方法:
/*/*[name()='bk:Books']/*[name()='bk:Book' and text()='Time Machine']
6 使用[]过滤当前节点的内容
如下,样例xml中有多个类似如下结构的内容,需要根据给定的name,解析id的值
<result>
<ax256:addressPools xmlns:ax256="http://dto.bcan.bmc.com/xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="ax256:ContainerAddressPoolDTO">
<ax256:acquiredFlag>true</ax256:acquiredFlag>
<ax256:condition xsi:nil="true" />
<ax256:dnsInfo xsi:type="ax256:DNSInfoDTO">
<ax256:primaryDnsServer />
<ax256:primaryDomainSuffixForNic />
<ax256:reverseDnsServer />
<ax256:reverseDnsZone />
<ax256:secondaryDnsServer />
</ax256:dnsInfo>
<ax256:endAddress>10.200.160.254</ax256:endAddress>
<ax256:freeAddressCount></ax256:freeAddressCount>
<ax256:gatewayAddress>10.200.160.254</ax256:gatewayAddress>
<ax256:id>CD11D561-DBEA--B51A-5761F977FAFA</ax256:id>
<ax256:linkId></ax256:linkId>
<ax256:name>ZH_Vlan160 Address Pool</ax256:name>
<ax256:natPoolName xsi:nil="true" />
<ax256:poolAddress>10.200.160.0</ax256:poolAddress>
<ax256:poolMask>255.255.255.0</ax256:poolMask>
<ax256:publicFlag>false</ax256:publicFlag>
<ax256:rangeName xsi:nil="true" />
<ax256:spaceName>ZH_Vlan160 Address Space</ax256:spaceName>
<ax256:startAddress>10.200.160.1</ax256:startAddress>
<ax256:totalAddressCount></ax256:totalAddressCount>
<ax256:usedAddressCount></ax256:usedAddressCount>
</ax256:addressPools>
</result>
解析方法:
//*[name()='ax256:addressPools']/.[*="ZH_Vlan160 Address Pool"]/*[name()='ax256:id'])
7 多个相同的父节点,根据父节点的子节点信息定位某个父节点
<returnval>
<HostSystem>host-1503</HostSystem>
<propSet>
<name>hardware.memorySize</name>
<val>412243603456</val>
</propSet>
<propSet>
<name>summary.quickStats.overallMemoryUsage</name>
<val>395960123392</val>
</propSet>
<propSet>
<name>systemResources.config.memoryAllocation.reservation</name>
<val>392761</val>
</propSet>
</returnval>
如果我想获取黄色部分的值,则可以如下解析:
//returnval/propSet[./name='hardware.memorySize']/val
Xpath语法学习的更多相关文章
- Xpath语法学习记录
高级参考:https://blog.csdn.net/wudaoshihun/article/details/82226122 举例: 1 <!DOCTYPE html> 2 <ht ...
- Python爬虫利器三之Xpath语法与lxml库的用法
前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...
- Xpath语法-爬虫(一)
前言 这一章节主要讲解Xpath的基础语法,学习如何通过Xpath获取网页中我们想要的内容;为我们的后面学习Java网络爬虫基础准备工作. 备注:此章节为基础核心章节,未来会在网络爬虫的数据解析环节经 ...
- Xpath语法与lxml库的用法
BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2 ...
- xpath语法速查
xpath的具体学习可以通过w3c查看(链接:http://www.w3school.com.cn/xpath/index.asp) 这里只是将平时用到的几个表格贴出来,以后查询: 这里的xpath我 ...
- 网页结构的简介和Xpath语法的入门教程
相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章如何利用Xpath抓取京东网商品信息以及Python网络爬虫四大选择器(正则表达式.BS4.Xp ...
- Golang 语法学习笔记
Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...
- Swift高级语法学习总结(转)
Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...
- Swift基础语法学习总结(转)
Swift基础语法学习总结 1.基础 1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...
随机推荐
- commons - lang(1) StringUtils
分享几个关于StrngUtils的几个实用的方法(以下方法中省略了参数) 1.isBlank() 这个方法用来判空,包括null和空字符串,之前自己写的时候都是str != null &&am ...
- AspNet Core 核心 通过依赖注入(注入服务)
说起依赖注入 相信大家已经很熟悉了,这里我在简要的描述一遍, 什么是依赖注入: 我们从字面意义上来解释一下:依赖代表着两个或者多个对象之间存在某些特定的联系:举一个不是很恰当的例子 比如说一度夫妻组成 ...
- HTML知识点总结之img、scirpt、link标签
<img>元素 使用<img>可以在网页插入一个图片,但实际上<img>标签并不会在网页中直接插入图像,而是从网页上链接图像. <img>的主要属性 ( ...
- .NET(c#) 移动开发平台 - Smobiler(1)
如果说基于.net的移动开发平台,目前比较流行的可能是xamarin了,不过除了这个,还有一个比xamarin更好用的国内的.net移动开发平台,smobiler,不用学习另外一套开发模式或者搭建复杂 ...
- Django-mtv开发模式
从著名的MVC模式开始说起 所谓的MVC就是把Web应用分为模型(M)控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的房还是 连接在一起,模型负责业务对象与数据库的映射(ORM),视图负 ...
- Zabbix实战-简易教程(6)--Server端高可用
3.4 server前端高可用 至此,单台Zabbix server环境已经搭建完成,为了达到高可用效果,我们需要通过2台服务器之间通过HA软件进行探测,一旦检测到主的server挂掉后,从的s ...
- CommonJS,AMD,RequireJS的区别
RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容.简单地实现一个CommonJS的定义就像下面这样: // someModul ...
- AtCoder Grand Contest 016
在雅礼和衡水的dalao们打了一场atcoder 然而窝好菜啊…… A - Shrinking 题意:定义一次操作为将长度为n的字符串变成长度n-1的字符串,且变化后第i个字母为变化前第i 或 i+1 ...
- Codeforces Round #410 (Div. 2)(A,字符串,水坑,B,暴力枚举,C,思维题,D,区间贪心)
A. Mike and palindrome time limit per test:2 seconds memory limit per test:256 megabytes input:stand ...
- phpcms模板生成原理
phpcms模板生成原理2009-09-25 16:14PHPCMS是功能强大的网站管理系统.以后有时间,俺要将其管理.使用.再开发等等都理顺出来.这一篇短文先介绍PHPCMS的模板机制. 所谓网站模 ...