本文主要是介绍XPath与lxml_3XPath坐标轴,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、XPath坐标轴
坐标轴用以定义当前节点的节点集合。
坐标轴名称 | 含义 |
ancestor | 选取当前节点的所有先辈元素及根节点 |
ancestor-or-self | 选取当前节点的所有先辈及当前节点本身 |
attribute | 选取当前节点的所有属性 |
child | 选取当前节点的所有子元素 |
descendant | 选取当前节点的所有后代元素 |
descendant-or-self | 选取当前节点的所有后代元素即当前节点本身 |
following | 选取文档中当前节点的结束标签之后的所有节点 |
following-sibling | 选取当前节点之后的所有同级节点 |
namespace | 选取当前节点的所有命名空间节点 |
parent | 选取当前节点的父节点 |
preceding | 选取当前节点的开始标签之前的所有节点 |
preceding-sibling | 选取当前节点之前的所有同级节点 |
self | 选取当前节点 |
二、位置路径表达式
位置路径可以是绝对路径,也可以是相对路径。
绝对路径以/开头,每条路径包括一个或多个步,每步之间以/分割;
绝对路径:/step/step/...
相对路径;step/step/...
三、步step
1 步包含三部分
1.1 坐标轴axis:定义所选节点与当前节点之间的关系
1.2 节点测试node-test:识别某个坐标轴内部的节点
1.3 预判predicate:提出预判条件对节点集合进行筛选
2 步语法
坐标轴::节点测试[预判]
3 举例
# child::nodename 选取所有属于当前节点的 book 子元素,等价于 './nodename'
root.xpath('child::book')
root.xpath('./book')# attribute::lang 选取当前节点的 lang 属性,等价于 './@lang'
root.xpath('//*[@lang]')[0].xpath('attribute::lang')
root.xpath('//*[@lang]')[0].xpath('@lang')# child::* 选取当前节点的所有子元素,等价于 './*'
root.xpath('child::*')
root.xpath('./*')# attribute::* 选取当前节点的所有属性,等价于 './@*'
root.xpath('//*[@*]')[0].xpath('attribute::*')
root.xpath('//*[@*]')[0].xpath('@*')# child::text() 选取当前节点的所有文本子节点,等价于 './text()'
root.xpath('child::text()')
root.xpath('./text()')# child::node() 选取当前节点所有子节点,等价于 './node()'
root.xpath('child::node()')
root.xpath('./node()')# descendant::book 选取当前节点所有 book 后代,等价于 './/book'
root.xpath('descendant::book')
root.xpath('.//book')# ancestor::book 选取当前节点所有 book 先辈
root.xpath('.//title')[0].xpath('ancestor::book')# ancestor-or-self::book 选取当前节点的所有 book 先辈以及如果当前节点是 book 的话也要选取
root.xpath('.//title')[0].xpath('ancestor-or-self::book')
root.xpath('.//book')[0].xpath('ancestor-or-self::book')
root.xpath('.//book')[0].xpath('ancestor::book')# child::*/child::price 选取当前节点的所有 price 孙节点,等价于 './*/price'
root.xpath('child::*/child::price')
root.xpath('./*/price')
这篇关于XPath与lxml_3XPath坐标轴的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!