Python-XML解析元素树复杂的XML结构

2024-04-29 15:49:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我现在需要用python解析XML文档。但是,我正在努力处理python库和这个相当复杂的xml。在

我已经看过这里使用的方法:python read complex xml with ElementTree但它似乎不起作用?在

我使用的是python2.7.7

XML来自http://nvd.nist.gov/download.cfm#CURRENTXML,例如,我需要解析的一个条目如下所示: http://pastebin.com/qdPN98VX

我的相关代码现在看起来像这样。 我可以成功地读取第一个条目的ID,但是,elment中的所有内容都是不可访问的。我也不确定ElementTree是否是50mb文件的最佳选择?公司名称:

from vulnsdb.models import Vuln as CVE


file = 'CVE/20140630-NVDCE-2.0-2014.xml'

tree = ET.parse(file)
root = tree.getroot()

for entry in root:
    c = CVE()
    c.name = entry.attrib['id']
    for details in entry:
        if details.find("{http://scap.nist.gov/schema/vulnerability/0.4}cve-id"):
            print details.find("{http://scap.nist.gov/schema/vulnerability/0.4}cve-id").text
    break

Tags: inidtreehttpforrootxmldetails
1条回答
网友
1楼 · 发布于 2024-04-29 15:49:23

可以使用递增解析树的^{}

import xml.etree.ElementTree as ET


TAG = '{http://scap.nist.gov/schema/feed/vulnerability/2.0}entry'
ID = "CVE-2014-0001"

tree = ET.iterparse(open('CVE/20140630-NVDCE-2.0-2014.xml'))
for event, element in tree:
    if event == 'end' and element.tag == TAG and element.attrib.get('id') == ID:
        print ET.tostring(element)
        break

相关问题 更多 >