如何使用 python 中的 ElementTree 编写具有多个根元素的 xml 文件

How to write xml file with multiple root element using ElementTree in python

我有 python 脚本,我已经编写了使用 xml.etree.cElementTree 编写 xml 文件的逻辑,逻辑如下所示

import xml.etree.cElementTree as ET

root = ET.Element("root")
for I in range(0,10):
    ET.SubElement(root, "field1").text = "some value1"
    ET.SubElement(root, "field2").text = "some vlaue2"

tree = ET.ElementTree(root)
tree.write("filename.xml")

并且输出类似

<root>
      <field1>some value1</field1>
      <field2>some value2</field2>
      <field1>some value1</field1>
      <field2>some value2</field2>
      <field1>some value1</field1>
      <field2>some value2</field2>
      <field1>some value1</field1>
      <field2>some value2</field2>......
</root>

但我想添加多个根,需要像下面这样放置

<root>
  <field1>some value1</field1>
  <field2>some value2</field2>
</root>
<root>
  <field1>some value1</field1>
  <field2>some value2</field2>
</root>
<root>
  <field1>some value1</field1>
  <field2>some value2</field2>
</root>
<root>
  <field1>some value1</field1>
  <field2>some value2</field2>
</root>

是否可以在 python

中使用 xml.etree.cElementTree 像上面的文件一样编写

您要生成的内容无效xml。 有关详细信息,请参阅 Do you always have to have a root node with xml/xsd?

您也可以随时手动连接字符串。

import xml.etree.cElementTree as ET
result= ''
for I in range(0, 10):
    root = ET.Element("root")
    ET.SubElement(root, "field1").text = "some value1"
    ET.SubElement(root, "field2").text = "some vlaue2"
    result += ET.tostring(root)
print(result) # or write the result to a file