使用xml.etree.ElementTree提取XML中指定name对应value的实现方法
实现方案
你可以直接通过节点的父子关系定位到对应value节点,以下是两种可用的实现方式:
方式1(更推荐,逻辑更清晰)
遍历每一组<header>节点,分别取出内部的name和value节点匹配判断,避免节点顺序变化导致的取值错误:
import xml.etree.ElementTree as ET # 加载XML文件获取根节点(如果已有root_node可跳过这两步) tree = ET.parse("你的XML文件路径") root_node = tree.getroot() for header in root_node.iter("header"): name_node = header.find("name") value_node = header.find("value") # 增加判空逻辑避免部分节点缺失导致报错 if name_node and name_node.text == "mykey" and value_node: print(value_node.text)
方式2(在你现有代码基础上修改)
拿到匹配的name节点后,先获取它的父节点<header>,再从父节点下查找value节点即可:
import re for name in root_node.iter("name"): if re.match(r"mykey", name.text): # 从name节点的父节点查找对应value value_node = name.getparent().find("value") if value_node: print(value_node.text)
补充说明:如果你的匹配规则就是name文本严格等于mykey,可以直接用name.text == "mykey"替换正则匹配,效率更高且不会误匹配到以mykey为前缀的其他值。
内容的提问来源于stack exchange,提问作者Bruce Banner
相关产品推荐
相关产品推荐

