You need to enable JavaScript to run this app. Python ElementTree中如何获取XML元素的点分隔全路径?
优惠活动
大模型
产品
解决方案
定价
更多

Python ElementTree中如何获取XML元素的点分隔全路径?

解决方法

核心思路是从目标元素向上遍历所有父级节点,收集标签后反转拼接即可,分两种适用场景:

Python 3.9+ 版本(推荐)

3.9及以上版本的xml.etree.ElementTree内置了iterancestors()方法可以直接遍历元素的所有祖先节点,代码如下:

def get_full_path(element):
    tags = [element.tag]
    for parent in element.iterancestors():
        tags.append(parent.tag)
    return '.'.join(reversed(tags))

# 调用方法即可得到目标路径
full_path = get_full_path(index)
print(full_path) # 输出:markets.us.summary.index

低版本Python兼容方案

低版本没有iterancestors()方法,需要在解析XML时手动为所有元素添加父节点引用:

import xml.etree.ElementTree as ET

# 解析XML并为所有元素绑定parent属性
tree = ET.parse('markets.xml')
root = tree.getroot()
for parent in root.iter():
    for child in parent:
        child.parent = parent

def get_full_path(element):
    tags = [element.tag]
    current = element
    while hasattr(current, 'parent'):
        current = current.parent
        tags.append(current.tag)
    return '.'.join(reversed(tags))

full_path = get_full_path(index)

命名空间处理补充

如果XML包含命名空间(比如示例中的cap:change元素),默认获取的标签会带上命名空间标识如{URI}change,如果不需要可以对tag做裁剪,将代码中获取tag的逻辑替换为:

tag = ele.tag.split('}', 1)[-1] if '}' in ele.tag else ele.tag

内容的提问来源于stack exchange,提问作者rez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 14:24:05