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

ElementTree如何获取NAME以%%PEP-开头的VARIABLE节点的VALUE值

问题原因

你之前的代码无法生效有三个核心问题:

  • find()方法仅返回第一个匹配的节点,要批量获取所有符合条件的节点必须使用findall()
  • Python标准库xml.etree.ElementTree支持的XPath为精简子集,不支持starts-with()这类前缀匹配函数,你写的[@NAME='']是精确匹配NAME属性为空的节点,和你的筛选目标完全不符
  • try是Python语法保留字,不能作为循环变量名使用
实现方案

方案1:标准库兼容写法(推荐)

不需要额外安装依赖,遍历所有VARIABLE节点后手动判断前缀即可,兼容性最好:

# 遍历当前JOB节点下所有VARIABLE子节点
for var in j_nodeOS.findall("./VARIABLE"):
    name = var.get("NAME", "")
    if name.startswith("%%PEP-"):
        value = var.get("VALUE")
        # 后续按需处理获取到的键值对即可,示例:
        print(f"{name} -> {value}")

方案2:完整XPath写法(需第三方库)

如果习惯直接用XPath做筛选,可以安装第三方解析库lxml,它支持完整XPath语法,可直接写前缀匹配规则:

# lxml的元素对象支持starts-with类XPath函数
for var in j_nodeOS.findall("./VARIABLE[starts-with(@NAME, '%%PEP-')]"):
    print(var.get("NAME"), var.get("VALUE"))

注意:不要在标准库ElementTree中使用starts-with()写法,会直接抛出XPath语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:54:23