Python 解析updateinfo.xml

Python 解析updateinfo.xml,python,xml,Python,Xml,我一直在尝试用Python解析大学项目的Amazon updateinfo.xml文件。示例文件如下所示: AL2012-2014-001 Amazon Linux 2012.03-AL2012-2014-001:libxml2的重要优先级包更新 重要的 Amazon Linux提供了包更新,修复了以下漏洞: CVE-2012-5134: 在libxml2解码某些实体的方式中发现了基于堆的缓冲区下溢缺陷。远程攻击者可以提供巧尽心思构建的XML文件,当在链接到libxml2的应用程序中打开该文

我一直在尝试用Python解析大学项目的Amazon updateinfo.xml文件。示例文件如下所示:


AL2012-2014-001
Amazon Linux 2012.03-AL2012-2014-001:libxml2的重要优先级包更新
重要的
Amazon Linux提供了包更新,修复了以下漏洞:
CVE-2012-5134:
在libxml2解码某些实体的方式中发现了基于堆的缓冲区下溢缺陷。远程攻击者可以提供巧尽心思构建的XML文件,当在链接到libxml2的应用程序中打开该文件时,会导致应用程序崩溃,或者可能以运行该应用程序的用户的权限执行任意代码。
亚马逊Linux
软件包/libxml2-debuginfo-2.7.8-10.23.26.ec2.x86_64.rpm
软件包/libxml2-devel-2.7.8-10.23.26.ec2.x86_64.rpm
软件包/libxml2-2.7.8-10.23.26.ec2.x86_64.rpm
软件包/libxml2-static-2.7.8-10.23.26.ec2.x86_64.rpm
Packages/libxml2-python-2.7.8-10.23.26.ec2.x86_64.rpm
AL2012-2015-088
Amazon Linux 2012.03-AL2012-2015-088:gnutls的中等优先级软件包更新
中等的
Amazon Linux提供了包更新,修复了以下漏洞:
CVE-2015-0294:
发现GnuTLS没有检查X.509证书的所有部分是否指示相同的签名算法。此缺陷与另一个缺陷相结合,可能导致绕过证书签名检查。
CVE-2015-0282:
发现GnuTLS没有验证签名中列出的哈希算法是否与证书中列出的哈希算法匹配。攻击者可以创建一个使用与其声称的不同哈希算法的证书,这可能导致GnuTLS在证书验证期间使用不安全、不允许的哈希算法。
CVE-2014-8155:
发现GnuTLS没有检查CA证书的激活和过期日期。这可能会导致使用GnuTLS的应用程序在证书颁发CA已过期时错误地接受证书作为有效证书。
亚马逊Linux
软件包/gnutls-debuginfo-2.8.5-18.14.al12.x86_64.rpm
软件包/gnutls-2.8.5-18.14.al12.x86_64.rpm
软件包/gnutls-devel-2.8.5-18.14.al12.x86_64.rpm
软件包/gnutls-utils-2.8.5-18.14.al12.x86_64.rpm
软件包/gnutls-guile-2.8.5-18.14.al12.x86_64.rpm
软件包/gnutls-debuginfo-2.8.5-18.14.al12.i686.rpm
软件包/gnutls-devel-2.8.5-18.14.al12.i686.rpm
软件包/gnutls-guile-2.8.5-18.14.al12.i686.rpm
软件包/gnutls-2.8.5-18.14.al12.i686.rpm
软件包/gnutls-utils-2.8.5-18.14.al12.i686.rpm
使用。就我使用
xml.etree
时的经验而言,性能很好

例如:

import xml.etree.ElementTree as ET
tree = ET.parse('updateinfo.xml')
root = tree.getroot()
updates = root.findall('update')

for update in updates:
  packages=update.find('pkglist').find('collection').findall('package')
  for package in packages:
    print(package.attrib['arch'], package.attrib['name'], package.attrib['release'], package.find('filename').text.replace('Packages/',''))
这将产生以下输出(使用
python3
运行):


它不会显示来自多个子树的元素。在本例中,它只显示关于libxml2的信息,而忽略了gnutl。我有一个巨大的xml,它有多个这样的包条目。嗨,冈瑟,我是如何访问实体的,比如“ARCH”,“NeXT”?例如,在“最后一行”,例如“代码>包”。AtRiBu'[CARC] < /Cord> @ Meta Authman,请考虑将我的答案设置为“接受”,如果它为您工作,我的意思是,我如何列出ARC:X86Y64名称:LIXXML2 Debug信息发布:1023.26EC2版本:2.7.8。
x86_64 libxml2-debuginfo 10.23.26.ec2 libxml2-debuginfo-2.7.8-10.23.26.ec2.x86_64.rpm
x86_64 libxml2-devel 10.23.26.ec2 libxml2-devel-2.7.8-10.23.26.ec2.x86_64.rpm
x86_64 libxml2 10.23.26.ec2 libxml2-2.7.8-10.23.26.ec2.x86_64.rpm
x86_64 libxml2-static 10.23.26.ec2 libxml2-static-2.7.8-10.23.26.ec2.x86_64.rpm
x86_64 libxml2-python 10.23.26.ec2 libxml2-python-2.7.8-10.23.26.ec2.x86_64.rpm
x86_64 gnutls-debuginfo 18.14.al12 gnutls-debuginfo-2.8.5-18.14.al12.x86_64.rpm
x86_64 gnutls 18.14.al12 gnutls-2.8.5-18.14.al12.x86_64.rpm
x86_64 gnutls-devel 18.14.al12 gnutls-devel-2.8.5-18.14.al12.x86_64.rpm
x86_64 gnutls-utils 18.14.al12 gnutls-utils-2.8.5-18.14.al12.x86_64.rpm
x86_64 gnutls-guile 18.14.al12 gnutls-guile-2.8.5-18.14.al12.x86_64.rpm
i686 gnutls-debuginfo 18.14.al12 gnutls-debuginfo-2.8.5-18.14.al12.i686.rpm
i686 gnutls-devel 18.14.al12 gnutls-devel-2.8.5-18.14.al12.i686.rpm
i686 gnutls-guile 18.14.al12 gnutls-guile-2.8.5-18.14.al12.i686.rpm
i686 gnutls 18.14.al12 gnutls-2.8.5-18.14.al12.i686.rpm
i686 gnutls-utils 18.14.al12 gnutls-utils-2.8.5-18.14.al12.i686.rpm