XPath

作者: cccshuang | 来源:发表于2018-01-21 15:07 被阅读0次

XPath节点

<?xml version="1.0" encoding="ISO-8859-1"?>
<classroom>
    <student>
          <id>100</id>
          <name lang="en">jack</name>
          <age>20</age>
    </student>
</classroom>

其中,<classroom>是文档节点, <id>100</id>是元素节点,lang="en"是属性节点,jack是文本
节点间关系包括父(Parent),子(Children),同胞(Sibling),先辈(Ancestor),后代(Descendant)。如student元素是id,name,age的父。

XPath语法

使用路径表达式来选取节点或节点集。

表达式 描述
nodename 选取此节点的所有子节点
/ 从根节点选取
// 选择任意位置的某个节点
. 选取当前节点
.. 选取当前节点的父节点
@ 选取属性

如:

<?xml version="1.0" encoding="ISO-8859-1"?>
<classroom>
    <student>
          <id>100</id>
          <name lang="en">jack</name>
          <age>20</age>
    </student>
    <student>
          <id>101</id>
          <name lang="en">tom</name>
          <age>21</age>
    </student>
</classroom>
  • 选取classroom的所有子节点 classroom
  • 选取根元素classroom /classroom
  • 选取属于classroom的子元素的所有student元素 classroom/student
  • 选取所有student子元素,而不管它们在文档中的位置
    //student
  • 选取属于classroom的子元素的所有student元素 ,而不管它们在classroom下的什么位置classroom//student
  • 选取名为lang的所有属性 //@lang
    以上是用来选取所有符合条件的节点。
    而若要选取某个特定的节点,则需要用到谓语(嵌在方括号里)。
  • 选取属于classroom子元素的第一个student元素/classroom/student[1]
  • 选取属于classroom子元素的最后一个student元素/calssroom/student[last()]
  • 选取属于classroom子元素的倒数第二个student元素/calssroom/student[last()-1]
  • 选取最前面的两个属于classroom元素的子元素的student元素/calssroom/student[position()<3]
  • 选取所有拥有名为lang的属性的name元素//name[@lang]
  • 选取所有name元素,且这些元素拥有值为eng的lang属性//name[@lang='eng']
  • 选取classroom元素的所有student元素,且其中的age元素的值大于20 /classroom/student[age>20]
  • 选取classroom元素的所有子元素/classroom/*
  • 选取所有带有属性的name元素//name[@*]
  • 选取student元素的所有name和age元素 //student/name | //student/age

XPath轴

轴定义了所选节点与当前节点间的树关系。若首先提取到一个节点信息,然后想在这个节点的基础上提取它的子节点或者父节点,就可以用到这个概念。

  1. 绝对路径:起始于正斜杠(/),如/step/step/...
  2. 相对路径:step/step/...
    首先提出一个“步”的概念:轴名称::节点测试[谓语]。
  • 选取当前classroom节点中子元素的student节点 /classroom/child::student
    *选取/classroom/student/name节点下的所有属性/classroom/student/name/attribute::*

XPath运算符

如:

  • 除 : /classroom/student[age = 40 div 2],类似,加减乘分别为+ - *
  • 与 : /classroom/student[age > 20 and age < 25],类似,“或”为and

相关文章

  • Python解析库lxml与xpath用法总结

    本文主要围绕以xpath和lxml库进行展开: 一、xpath 概念、xpath节点、xpath语法、xpath轴...

  • Python+Selenium之元素定位XPATH

    XPATH简介: 参考网站:W3school selenium之xpath源码 xpath各种实际用法 XPATH...

  • python爬虫之XPath解析

    XPath 简介: XPath 是一门在 XML 文档中查找信息的语言 什么是 XPath? XPath 使用路径...

  • Python(六十八)xpath案例实战

    07_xpath案例实战/01_xpath.py: 07_xpath案例实战/02_xpath.py: 07_xp...

  • 4.xpath和BeautifulSoup4介绍

    xpath语法:http://www.runoob.com/xpath/xpath-syntax.html xpa...

  • 常用的xpath

    xpath的模糊查询 选取同级节点 获取父级节点 xpath定位 列表时间筛选 xpath获取标签 xpath的s...

  • xpath使用笔记

    xpath学习笔记 xpath简介 xpath 用于在XML文档中通过元素和属性进行导航xpath 使用路径表达式...

  • XPath

    XPath 简介 什么是 XPath?XPath 使用路径表达式在 XML 文档中进行导航XPath 包含一个标准...

  • xpath 和 pyquery

    主题: **xpath 和 pyquery ** xpath 选取节点 谓语 通配符 取多个路径 xpath轴 功...

  • 爬虫解析库XPath使用

    爬虫解析库XPath使用 1.XPath简介 XPath 是一门在 XML 文档中查找信息的语言。XPath 用于...

网友评论

      本文标题:XPath

      本文链接:https://www.haomeiwen.com/subject/scbfaxtx.html