You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用ElementTree解析XML查找diagnosticEcgSpeed对应的val属性值

解决方案

错误原因

你使用的XPath表达式".//*[@lid='diagnosticEcgSpeed']"通过通配符*匹配所有节点,存在匹配到非setting节点的风险,出现KeyError: 'val'的核心原因是find方法返回的节点没有val属性,说明实际匹配到的节点不符合预期。另外部分旧版本的xml.etree.ElementTree对通配符的属性查询支持存在兼容问题,也可能导致匹配异常。

修复方案

  1. 明确指定要匹配的节点为setting,避免无关节点干扰
  2. 增加非空判断,避免节点不存在时抛出属性访问异常

修复后代码如下:

import xml.etree.ElementTree as ET
tree = ET.parse('basics.xml')
root = tree.getroot()

# 明确指定匹配setting节点,避免通配符匹配异常
target_node = root.find(".//setting[@lid='diagnosticEcgSpeed']")
if target_node is not None and 'val' in target_node.attrib:
    y = target_node.attrib['val']
    print(y)
else:
    print("未找到目标节点或节点无val属性")

运行上述代码即可正确输出目标值-1,如果需要验证匹配结果,可以在获取target_node后新增打印语句查看节点详情:

print(target_node.tag)
print(target_node.attrib)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:36:04