首页 > 解决方案 > 试图将列表的内容写入 xml

问题描述

我有 3 个长度相同的列表,我正在尝试将它们写入 xml 文件,如下所示:

import xml.etree.ElementTree as ET
import re

title_list = ['title1', 'title2', 'title3']
date_list = ['date1', 'date2', 'date3']
text_list = ['text1', 'text2', 'text3']

book = ET.Element('book')
for e in zip(title_list, date_list, text_list):

    book = ET.Element('book')
    article = ET.SubElement(book, 'article')
    title = ET.SubElement(article, 'title')
    date = ET.SubElement(article, 'date')
    text = ET.SubElement(article, 'text')

    title.text = e[0]
    date.text = e[1]
    text.text = e[2]


tree_out = ET.ElementTree(book)
tree_out.write('test.xml')

我的输出(氧气中的“漂亮打印”):

<book>
    <article>
        <title>title3</title>
        <date>date3</date>
        <text>text3</text>
    </article>
</book>

但我想拥有:

<book>
    <article>
        <title>title1</title>
        <date>date1</date>
        <text>text1</text>
    </article>
    <article>
        <title>title2</title>
        <date>date2</date>
        <text>text2</text>
    </article>
    <article>
        <title>title3</title>
        <date>date3</date>
        <text>text3</text>
    </article>
</book>

我怎样才能得到整个输出?我在这里读了很多书,但对我没有用。请用简单的术语解释一下,因为我对这个库和 xml 很陌生

标签: python-3.xxmlelementtree

解决方案


在您的for循环中,您重新定义book,以便每次迭代都会覆盖它。

删除它,你应该得到你正在寻找的结果......

import xml.etree.ElementTree as ET

title_list = ['title1', 'title2', 'title3']
date_list = ['date1', 'date2', 'date3']
text_list = ['text1', 'text2', 'text3']

book = ET.Element('book')
for e in zip(title_list, date_list, text_list):

    # book = ET.Element('book')  # <-- REMOVE THIS LINE
    article = ET.SubElement(book, 'article')
    title = ET.SubElement(article, 'title')
    date = ET.SubElement(article, 'date')
    text = ET.SubElement(article, 'text')

    title.text = e[0]
    date.text = e[1]
    text.text = e[2]

tree_out = ET.ElementTree(book)
tree_out.write('test.xml')

推荐阅读