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

使用Python ElementTree提取XML中category1下status为Open的节点

解决ElementTree仅提取category1下status为Open的节点问题

可行代码实现

import xml.etree.ElementTree as ET 

# 替换为你的XML文件实际路径
report = "xmldocument.xml"
tree = ET.parse(report)
root = tree.getroot()

cat1findings = []

# 遍历所有category1节点
for category1 in root.iter('category1'):
    # 仅在当前category1节点下遍历blah子节点
    for blah in category1.iter('blah'):
        # 获取节点的status属性值
        status = blah.get('status')
        # 判断状态是否为Open
        if status == 'Open':
            # 按需保存内容,示例为保存RuleTitle属性
            cat1findings.append(blah.get('RuleTitle'))
            # 若需保存整个节点对象,改用:cat1findings.append(blah)

print(cat1findings)

原代码问题分析

  • 遍历范围错误:原代码用root.iter(blah)从根节点全局查找blah,应该改为从当前category1节点下查找,避免混入其他分类的节点
  • 语法错误:root.iter(blah)中的blah未加引号,应为字符串'blah'
  • 属性判断逻辑错误:blah.attrib == 'Status="Open"'的写法完全错误,需通过blah.get('status')获取属性值,同时注意XML中属性名为小写status,与原代码的Status大小写不匹配
  • 未定义变量:output变量未声明,需替换为实际要保存的内容(如节点的属性值或节点对象)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 22:55:18