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

如何用xml.dom.minidom获取XML中指定key对应的值?

使用xml.dom.minidom获取指定key对应的value值

针对你的XML结构和现有代码,只需在遍历channel的循环中扩展逻辑,定位到values下的entry节点,匹配目标key后提取对应value即可。

修改后的完整代码

import xml.dom.minidom

xml_doc = xml.dom.minidom.parse(path)
root = xml_doc.documentElement

chns = xml_doc.getElementsByTagName('channel')
target_key = "SRV_PARAM_CH_ENABLED"

for chn in chns:
    # 获取channel的index值
    idxx = chn.getElementsByTagName('index')
    idx = idxx[0].childNodes[0].data
    print(f"当前Channel索引: {idx}")
    
    # 获取当前channel下的values节点
    values_nodes = chn.getElementsByTagName('values')
    if not values_nodes:
        continue
    values_node = values_nodes[0]
    
    # 遍历values下的所有entry节点
    entries = values_node.getElementsByTagName('entry')
    for entry in entries:
        # 获取当前entry的key
        key_nodes = entry.getElementsByTagName('key')
        if not key_nodes:
            continue
        current_key = key_nodes[0].childNodes[0].data
        
        # 匹配目标key
        if current_key == target_key:
            # 获取对应的value值
            value_nodes = entry.getElementsByTagName('value')
            if value_nodes:
                value_content = value_nodes[0].childNodes[0].data
                print(f"{target_key}对应的value值: {value_content}")
            else:
                print(f"{target_key}存在,但未设置value值")
            # 找到目标后跳出循环,无需继续遍历其他entry
            break

关键逻辑说明

  • 先通过chn.getElementsByTagName('values')定位到当前channel下的values节点,避免跨channel查找
  • 遍历每个entry时,先提取key的文本内容,和目标SRV_PARAM_CH_ENABLED比对
  • 匹配成功后,检查是否存在value节点:如果存在则提取其文本内容,不存在则给出提示
  • 加入了节点存在性判断,避免因部分节点缺失导致的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:38:23