贴几个我学习Xpath的参考

1 基本使用的参考

XPath学习:基本语法(一)

2 较为详细且清晰例子参考,推荐

XPath 详解,总结

3 详细语法参考

Xpath语法格式整理

4 官方参考

XPath 教程

5 XSD (xml Schema Definition)

XML中有几种符号需要使用转义字符,分别是:

实体值字符串 特殊字符

&     &

&lt;       <

&gt;      >

&quot;     "

&apos;     '

说明:

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语法学习的更多相关文章

  1. Xpath语法学习记录

    高级参考:https://blog.csdn.net/wudaoshihun/article/details/82226122 举例: 1 <!DOCTYPE html> 2 <ht ...

  2. Python爬虫利器三之Xpath语法与lxml库的用法

    前面我们介绍了 BeautifulSoup 的用法,这个已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法.如果大家对 Beau ...

  3. Xpath语法-爬虫(一)

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

  4. Xpath语法与lxml库的用法

    BeautifulSoup 已经是非常强大的库了,不过还有一些比较流行的解析库,例如 lxml,使用的是 Xpath 语法,同样是效率比较高的解析方法. 1.安装 pip install lxml 2 ...

  5. xpath语法速查

    xpath的具体学习可以通过w3c查看(链接:http://www.w3school.com.cn/xpath/index.asp) 这里只是将平时用到的几个表格贴出来,以后查询: 这里的xpath我 ...

  6. 网页结构的简介和Xpath语法的入门教程

    相信很多小伙伴已经听说过Xpath,之前小编也写过一篇关于Xpath的文章,感兴趣的小伙伴可以戳这篇文章如何利用Xpath抓取京东网商品信息以及Python网络爬虫四大选择器(正则表达式.BS4.Xp ...

  7. Golang 语法学习笔记

    Golang 语法学习笔记 包.变量和函数. 包 每个 Go 程序都是由包组成的. 程序运行的入口是包 main. 包名与导入路径的最后一个目录一致."math/rand" 包由 ...

  8. Swift高级语法学习总结(转)

    Swift高级语法学习总结 1.函数 1.1 func funcNmae()->(){} 这样就定义了一个函数,它的参数为空,返回值为空,如果有参数和返回值直接写在两个括号里就可以了 1.2 参 ...

  9. Swift基础语法学习总结(转)

    Swift基础语法学习总结 1.基础  1.1) swift还是使用// 和/* */ 来注释,并且/* */允许多行注释. 1.2) swift使用print和println打印,它的传参是一个泛型 ...

随机推荐

  1. Linux常见命令(用户和组_待补充完善)

    添加新用户: useradd [一次性创建新用户账户及设置用户HOME目录结构的简便方法] useradd -D [Linux系统的系统默认值] useradd -m test [创建新用户test目 ...

  2. 【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版

    3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec  Memory Limit: 256 MBSubmit: 2023  Solved: 778 ...

  3. Vim 在 windows 环境下的初步配置

    一..下载工具包 vim 程序:下载安装程序 vim-plug 插件: 下载插件管理文件 二. 安装 VIM 1.如果无特别要求,一路选择默认, 在类型选择时,选择 full 2. 配置 vim-pl ...

  4. [转]设置Jupyter-Notebook表格打印多个变量的值

    有一点已经众所周知.把变量名称或没有定义输出结果的语句放在cell的最后一行,无需print语句,Jupyter也会显示变量值.当使用Pandas DataFrames时这一点尤其有用,因为输出结果为 ...

  5. Nginx常用配置实例(4)

    Nginx作为一个HTTP服务器,在功能实现方面和性能方面都表现得非常卓越,完全可以与Apache相媲美,几乎可以实现Apache的所有功能,下面就介绍一些Nginx常用的配置实例,具体包含虚拟主机配 ...

  6. 【批处理学习笔记】第十三课:常用dos命令(3)

    网络命令ping 进行网络连接测试.名称解析ftp 文件传输net 网络命令集及用户管理telnet 远程登陆ipconfig显示.修改TCP/IP设置msg 给用户发送消息arp 显示.修改局域网的 ...

  7. vijos 1213:80人环游世界

    描述 想必大家都看过成龙大哥的<80天环游世界>,里面的紧张刺激的打斗场面一定给你留下了深刻的印象.现在就有这么一个80人的团伙,也想来一次环游世界. 他们打算兵分多路,游遍每一个国家. ...

  8. 基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案

    基于Windows环境下cmd/编译器无法输入中文,显示中文乱码解决方案 两个月前做C++课设的时候,电脑编译器编译结果出现了中文乱码,寻求了百度和大神们,都没有解决这个问题,百度上一堆解释是对编译器 ...

  9. [bzoj1705] [Usaco2007 Nov]Telephone Wire 架设电话线

    正常DP.. f[i][j]表示前i个电线杆,把第i个电线杆高度改为j的最少总费用.设原来电线杆高度为h[] f[i][j]=min{ f[i-1][k]+C*|j-k|+(j-h[i])^2,(k& ...

  10. HDU-5340 Three Palindromes(字符串哈希)

    http://acm.hdu.edu.cn/showproblem.php?pid=5340 orz到了新的字符串hash姿势 #include<cstdio>#include<cs ...