Python 3 XML findall 空输出
Python 3 XML findall empty output
我正在尝试解决以下问题:
我想获取标签的 'type' 属性(cpe-23 标签是可选的,并且是 XML 架构中的任何类型)
<cpe-23:deprecated-by ... type="NAME_CORRECTION"/>
阅读 Whosebug 中的其他问题使我得到以下代码:
import xml.etree.ElementTree as ET
tree = ET.parse(".../official-cpe-dictionary_v2.3.xml")
root = tree.getroot()
for child in root.findall('cpe-item/cpe-23:cpe23-item/cpe-23:deprecation/cpe-23:deprecated-by',
namespaces={'cpe-23': 'http://scap.nist.gov/schema/cpe-extension/2.3'}):
print(child.attrib['name'], child.attrib['type'])
我现在的问题是我得到一个空输出,我的程序停止并显示 code:0
关于如何解决这个问题有什么想法吗?
非常感谢!
来源(XML-文件):
<cpe-list ...>
<generator>
...
</generator>
<cpe-item name="cpe:/a:3com:tippingpoint_ips_tos:2.2.3" deprecated="true" deprecation_date="2010-12-28T17:36:02.240Z">
<title xml:lang="en-US">3Com TippingPoint IPS TOS 2.2.3</title>
<cpe-23:cpe23-item name="cpe:2.3:a:3com:tippingpoint_ips_tos:2.2.3:*:*:*:*:*:*:*">
<cpe-23:deprecation date="2010-12-28T12:36:02.240-05:00">
<cpe-23:deprecated-by name="cpe:2.3:o:3com:tippingpoint_ips_tos:2.2.3:*:*:*:*:*:*:*" type="NAME_CORRECTION"/>
</cpe-23:deprecation>
</cpe-23:cpe23-item>
</cpe-item>
<cpe-item ...>
...
</cpe-item>
...
</cpe-list>
我能够自己阅读图书馆的文档来解决这个问题。没有输出的原因是 Element.findall() 函数只查看直接子项。 "cpe-23:cp23-item" 是根节点的孙节点。
我正在尝试解决以下问题:
我想获取标签的 'type' 属性(cpe-23 标签是可选的,并且是 XML 架构中的任何类型)
<cpe-23:deprecated-by ... type="NAME_CORRECTION"/>
阅读 Whosebug 中的其他问题使我得到以下代码:
import xml.etree.ElementTree as ET
tree = ET.parse(".../official-cpe-dictionary_v2.3.xml")
root = tree.getroot()
for child in root.findall('cpe-item/cpe-23:cpe23-item/cpe-23:deprecation/cpe-23:deprecated-by',
namespaces={'cpe-23': 'http://scap.nist.gov/schema/cpe-extension/2.3'}):
print(child.attrib['name'], child.attrib['type'])
我现在的问题是我得到一个空输出,我的程序停止并显示 code:0
关于如何解决这个问题有什么想法吗?
非常感谢!
来源(XML-文件):
<cpe-list ...>
<generator>
...
</generator>
<cpe-item name="cpe:/a:3com:tippingpoint_ips_tos:2.2.3" deprecated="true" deprecation_date="2010-12-28T17:36:02.240Z">
<title xml:lang="en-US">3Com TippingPoint IPS TOS 2.2.3</title>
<cpe-23:cpe23-item name="cpe:2.3:a:3com:tippingpoint_ips_tos:2.2.3:*:*:*:*:*:*:*">
<cpe-23:deprecation date="2010-12-28T12:36:02.240-05:00">
<cpe-23:deprecated-by name="cpe:2.3:o:3com:tippingpoint_ips_tos:2.2.3:*:*:*:*:*:*:*" type="NAME_CORRECTION"/>
</cpe-23:deprecation>
</cpe-23:cpe23-item>
</cpe-item>
<cpe-item ...>
...
</cpe-item>
...
</cpe-list>
我能够自己阅读图书馆的文档来解决这个问题。没有输出的原因是 Element.findall() 函数只查看直接子项。 "cpe-23:cp23-item" 是根节点的孙节点。