Python XPath 轴介绍

2023-04-17 00:00:00 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
皮蛋编程

相关文章