我试图从xml字符串中获取一个值,但它抛出的attrib无法从None类型中检索。
请考虑以下XML
<summary-report>
<static-analysis>
<modules>
<module sev0issue="0" sev1issue="14">
</module>
</modules>
</static-analysis>
<dynamic-analysis>
<modules>
<module sev0issue="0" sev1issue="14">
</module>
</modules>
</dynamic-analysis>
</summary-report>如何解析和获取静态分析标签下的sev0issue?
我正在尝试下面的代码来获得值。
value= ET.fromstring(XmlData)
issue= value.find('.//summary-report/static-analysis/modules/module')
issueCount= issue.get('sev0issue') 当我尝试这样做的时候,我得到了错误,就像没有attrib的sev0issue用于非类型
发布于 2022-07-21 20:01:06
import xml.etree.ElementTree as ET
XmlData = '''<summary-report>
<static-analysis>
<modules>
<module sev0issue="0" sev1issue="14">
</module>
</modules>
</static-analysis>
<dynamic-analysis>
<modules>
<module sev0issue="0" sev1issue="14">
</module>
</modules>
</dynamic-analysis>
</summary-report>'''
summary_report = ET.fromstring(XmlData)
# Method 1 prints both values from static and dynamic analysis
for a in summary_report:
for b in a:
for c in b:
print(c.attrib['sev0issue'])
print()
# Method 2
print(summary_report[0][0][0].attrib['sev0issue'])产出:
0
0
0发布于 2022-07-21 18:36:24
不太确定为什么,但是使用ElementTree,您不会开始从根元素进行搜索。正确的版本是:
issue = value.find('.//static-analysis/modules/module')
issue.get('sev0issue') 另一方面,如果使用lxml,则更直观:
from lxml import etree
value= etree.fromstring(XmlData)
values.xpath('/summary-report/static-analysis/modules/module/@sev0issue')同样的输出。
https://stackoverflow.com/questions/73070533
复制相似问题