如何在Python中使用ElementTree编写具有多个根元素的xml文件 [英] How to write xml file with multiple root element using ElementTree in python

查看:214
本文介绍了如何在Python中使用ElementTree编写具有多个根元素的xml文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 导入xml.etree.cElementTree作为ET 

root = ET.Element( root)
for I in范围(0,10):
ET.SubElement(root, field1)。text =某个值1
ET.SubElement(root, field2)。text =一些vlaue2

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

,它给出的输出类似于

 < root> 
< field1>某个值1< / field1>
< field2>某个值2< / field2>
< field1>某个值1< / field1>
< field2>某个值2< / field2>
< field1>某个值1< / field1>
< field2>某个值2< / field2>
< field1>某个值1< / field1>
< field2>一些值2< / field2> ......
< / root>

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

 < root> 
< field1>某个值1< / field1>
< field2>某个值2< / field2>
< / root>
< root>
< field1>某个值1< / field1>
< field2>某个值2< / field2>
< / root>
< root>
< field1>某个值1< / field1>
< field2>一些值2< / field2>
< / root>
< root>
< field1>某个值1< / field1>
< field2>一些值2< / field2>
< / root>

是否可以使用 xml.etree.cElementTree 在python中

解决方案

您要生成的无效XML。
参见您始终

还可以始终手动连接字符串。

 将xml.etree.cElementTree导入为ET 
result =''
for I in range(0,10):
root = ET.Element( root)
ET.SubElement(root, field1)。text =某些value1
ET.SubElement(root, field2)。text =一些vlaue2
结果+ = ET.tostring(root)
print(result)#或将结果写入文件


I have python script and I have already written logic of writing xml file using xml.etree.cElementTree and the logic is look like below

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")

and it give output like

<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>

but I want to add multiple root and need out put like below

<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>

is it possible to write like above file using xml.etree.cElementTree in python

解决方案

What you want to generate is not valid xml. See Do you always have to have a root node with xml/xsd? for more info.

Also you can always manually concatenate the string.

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

这篇关于如何在Python中使用ElementTree编写具有多个根元素的xml文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆