XML处理脚本仅列出一个元素,但是要列出多个元素

问题描述

我整理了一个简单的Python脚本,以打印出与父元素属性Security Advisory关联的所有包名称的XML数据。

import xml.etree.ElementTree as ET
tree = ET.parse('errata.xml')
root = tree.getroot()
for security in root.findall("*[@type='Security Advisory']"):
    packages = security.find('packages')
    print(packages.text)

XML数据位于here

但是,该脚本仅打印出第一个程序包名称,但是有多个程序包名称。我将如何获取所有属于父属性Security Advisory的软件包名称

解决方法

在下面(似乎可行)

import xml.etree.ElementTree as ET

import requests

r = requests.get('https://cefs.b-cdn.net/6010e333a44911e24b5112e23acbb346ae15f7b7/errata.latest.xml')
if r.status_code == 200:
    root = ET.fromstring(r.content)
    sec_elements = [e for e in root.findall("*[@type='Security Advisory']") if
                    e.find('os_release') is not None and int(e.find('os_release').text) > 6]
    for ele in sec_elements:
        packages = ele.findall('./packages')
        for p in packages:
            print(p.text)