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

