如何使用Python提取XML标签对应的父节点?
实现方案
xml.etree.ElementTree 本身没有自带父节点属性,我们可以先遍历整个XML树构建「元素-父元素」的映射字典,再生成你需要的父节点标签列表,具体代码如下:
import xml.etree.ElementTree as ET tree = ET.parse(xml_path) root = tree.getroot() # 第一步:构建所有元素和对应父元素的映射字典 parent_map = {} for parent in root.iter(): for child in parent: parent_map[child] = parent # 第二步:生成父节点标签列表 parents = [] for elem in root.iter(): # 根节点没有父节点,对应填充你示例里的'\n',可根据需求调整 parent_tag = parent_map[elem].tag if elem in parent_map else '\n' parents.append(parent_tag)
用你提供的示例XML测试,输出的parents列表和你给出的期望结果完全匹配:
- 根节点
<data>没有父节点,对应返回第一个值\n - 所有
<country>元素的父节点是<data>,对应标签为data - 所有
<rank>、<year>、<gdppc>、<neighbor>元素的父节点是<country>,对应标签为country
如果需要更简洁的写法,也可以把生成parents的过程改写为列表推导式:
parents = [parent_map.get(elem, type('Dummy', (), {'tag':'\n'})()).tag for elem in root.iter()]
内容的提问来源于stack exchange,提问作者Alexandre FG
相关产品推荐
相关产品推荐

