Python XPath 轴介绍
XPath轴是指在XML文档中,按照一定的规则获取节点集合的方法,它提供了在文档中沿着特定路径移动的方式。XPath中共有13个轴,它们可以理解为从当前节点开始沿着特定方向移动的指针,用于在XML文档中选取特定的节点或节点集合。
以下是XPath中13个轴:
轴名称 | 结果 |
---|---|
ancestor | 选取当前节点的所有祖先节点 |
ancestor-or-self | 选取当前节点及其所有祖先节点 |
attribute | 选取当前节点的所有属性 |
child | 选取当前节点的所有子节点 |
descendant | 选取当前节点的所有子孙节点 |
descendant-or-self | 选取当前节点及其所有子孙节点 |
following | 选取文档中当前节点的结束标签之后的所有节点 |
following-sibling | 选取当前节点之后的所有兄弟节点 |
namespace | 选取当前节点的所有命名空间节点 |
parent | 选取当前节点的父节点 |
preceding | 选取文档中当前节点的开始标签之前的所有节点 |
preceding-sibling | 选取当前节点之前的所有兄弟节点 |
self | 选取当前节点 |
下面是使用Python的lxml库演示XPath轴的使用:
from lxml import etree # 构造示例XML文档 xml_str = """ <root> <book id="1"> <title>Python入门</title> <author>皮蛋编程</author> </book> <book id="2"> <title>Python进阶</title> <author>pidancode.com</author> </book> <book id='3'> <title>XML教程</title> <author>皮蛋编程</author> </book> </root> """ root = etree.fromstring(xml_str) # 选取所有作者节点的父节点(即书籍节点) books = root.xpath("//author/parent::*") for book in books: print(etree.tostring(book, encoding='utf-8').decode()) # 选取所有书籍节点的ID属性 ids = root.xpath("//book/@id") print(ids) # 选取所有作者节点 authors = root.xpath("//author") for author in authors: print(author.text)
输出结果:
<book id="1"> <title>Python入门</title> <author>皮蛋编程</author> </book> <book id="2"> <title>Python进阶</title> <author>pidancode.com</author> </book> <book id='3'> <title>XML教程</title> <author>皮蛋编程</author> </book> ['1', '2', '3'] 皮蛋编程 pidancode.com 皮蛋编程
相关文章