作者:硕之缘2010 | 来源:互联网 | 2023-05-27 17:24
我通过循环字符串列表在python中编写多个xml文件.假设我有:
from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring
parent = Element('parent')
child = SubElement(parent, 'child')
f = open('file.xml', 'w')
document = ElementTree(parent)
l = ['a', 'b', 'c']
for ch in l:
child.text = ch
document.write(f, encoding='utf-8', xml_declaration=True)
输出:
a
b
c
期望的输出:
a
b
c
我只希望xml声明出现在文件的顶部一次.可能应该在循环之前将声明写入文件,但是当我尝试这样时,我会得到空元素.我不想这样做:
f.write('')
如何只写xml声明到文件?
编辑:所需的输出
1> Amirshk..:
您需要在写入文件之前将SubItems添加到树中.在您的代码中,您覆盖了相同的元素,并在循环的每次迭代中编写了整个XML文档.
此外,您的XML语法缺少顶级"root"元素才有效.
from xml.etree.ElementTree import ElementTree, Element, SubElement, tostring
root = Element('root')
l = ['a', 'b', 'c']
for ch in l:
parent = SubElement(root,'parent')
child = SubElement(parent, 'child')
child.text = ch
document = ElementTree(root)
document.write('file.xml', encoding='utf-8', xml_declaration=True)
输出将是:
a
b
c