如何用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
相关产品推荐
相关产品推荐

