使用 Python 将 XML 转换为 CSV

XML 或 Extensible Markup Language 是一种标记语言,它以人类可读和机器可读的格式将数据存储在文档中。它有一个文件扩展名,.xml

CSV 或逗号分隔值将数据存储在以逗号分隔的文档中。它有一个文件扩展名,.csv。在本文中,我们将学习如何使用 Python 将 XML 数据转换为 CSV 数据。

使用 Python 将 XML 转换为 CSV

要将 XML 转换为 CSV,我们可以使用 Python 中内置的 xml 模块。

这个模块还有另一个模块,ElementTree,我们可以用它来将 XML 文档表示为一棵树。它有一个方法 parse(),它接受一个 XML 文档作为参数。

它解析整个 XML 文档并将其以树的形式存储。树有一个 getroot() 方法,它返回树的根元素。

使用 for 循环,我们可以遍历树并使用标签名称(namerollnumber 和 age)访问数据。

为了理解转换,我们需要一些样本 XML 数据。你可以使用以下 XML 数据并将其存储在名为 input.xml 的文件中。

以下代码段将使用此数据,你也应该使用此数据,以便我们在同一页面上。

<students>
    <student>
        <name>Rick Grimes</name>
        <rollnumber>1</rollnumber>
        <age>15</age>
    </student>
    <student>
        <name>Lori Grimes</name>
        <rollnumber>2</rollnumber>
        <age>16</age>
    </student>
    <student>
        <name>Carl Grimes</name>
        <rollnumber>3</rollnumber>
        <age>14</age>
    </student>
    <student>
        <name>Judith Grimes</name>
        <rollnumber>4</rollnumber>
        <age>13</age>
    </student>
</students>

请参阅以下 Python 代码以了解如何执行转换。

from xml.etree import ElementTree

tree = ElementTree.parse("input.xml")
root = tree.getroot()

for student in root:
    name = student.find("name").text
    roll_number = student.find("rollnumber").text
    age = student.find("age").text
    print(f"{name},{roll_number},{age}")

输出:

Rick Grimes,1,15
Lori Grimes,2,16
Carl Grimes,3,14
Judith Grimes,4,13