如何提取XML中所有带值的节点标签并将其存入列表?
问题原因
你当前的代码会将所有层级的节点标签都加入结果列表,包括Max_30e、Max_50e、Sample这类仅作为父容器、本身没有直接存储有效文本值的节点,因此会出现多余的元素。
解决代码
import xml.etree.ElementTree as ET root = ET.fromstring(xml1) values = [] # 递归遍历XML所有层级的节点 for node in root.iter(): # 仅保留没有子节点的叶子节点(即直接存储值的节点) if len(node) == 0: values.append(node.tag) print(values)
逻辑说明
root.iter() 会递归遍历根节点下所有层级的子节点,判断条件 len(node) == 0 可以筛选出没有子元素的叶子节点,这类节点就是你需要的带有实际值的节点,会自动过滤掉Max_30e、Sample这类父容器节点,运行后输出结果和你期望的完全一致。
内容的提问来源于stack exchange,提问作者Al-Andalus
相关产品推荐
相关产品推荐

