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

如何基于ElementTree元素的name值解析对应的value值?

根据指定name值获取XML中对应的value值

场景说明

使用ElementTree模块解析requests返回的XML,其中<callvariables>标签下包含多组<CallVariable>节点,示例结构如下:

<callvariables>
    <CallVariable>
        <name>callVariable1</name>
        <value>Client</value>
    </CallVariable>
    <CallVariable>
        <name>callVariable2</name>
        <value>1234567890</value>
    </CallVariable>
    <CallVariable>
        <name>callVariable3</name>
        <value>Illinois</value>
    </CallVariable>
    ........
</callvariables>

现有代码可遍历获取所有name和value:

for child in root.findall('.//CallVariable'):
    name = child.find('.//name')
    value = child.find('.//value')
    print(name.text, value.text)

解决方案

方法1:构建字典实现快速查询(适合多次查询)

先将所有<CallVariable>节点的name和value存入字典,之后可直接通过name键获取对应值:

import xml.etree.ElementTree as ET

# 假设root是已解析完成的XML根节点
call_var_dict = {}
for var in root.findall('.//CallVariable'):
    name_node = var.find('name')
    value_node = var.find('value')
    if name_node is not None and value_node is not None:
        call_var_dict[name_node.text] = value_node.text

# 查询指定name的value
print(call_var_dict.get('callVariable1'))  # 输出: Client
print(call_var_dict.get('callVariable3'))  # 输出: Illinois
# 若name不存在,可指定默认值
print(call_var_dict.get('callVariableX', '未找到'))  # 输出: 未找到

方法2:使用XPath直接定位(适合单次查询)

通过XPath表达式精准匹配目标name对应的<value>节点,无需遍历所有节点:

target_name = 'callVariable2'
# 构造XPath,匹配包含指定name的CallVariable节点下的value
value_node = root.find(f".//CallVariable[name='{target_name}']/value")

if value_node:
    print(value_node.text)  # 输出: 1234567890
else:
    print(f"不存在name为{target_name}的节点")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:05:02