如何使用python在XML中的根元素下创建多个子元素?

时间:2016-02-23 08:08:49

标签: xml python-3.x

我正在尝试使用带有以下输出的python3创建一个简单的XML文件。

<products>
    <product>
        <id>1</id>
        <name>Apple</name>
    </product>
    <product>
        <id>2</id>
        <name>Banana</name>
    </product>
</products>

我浏览了xml.etree.ElementTree但是我无法找到完成上述方法的确切方法

我可以做到这样的事情

<products>
    <product>
        <id>1</id>
        <name>Apple</name>
        <id>2</id>
        <name>Banana</name>
    </product>
</products>

以下是我使用的代码:

import xml.etree.cElementTree as ET
root = ET.Element("products")
doc = ET.SubElement(root, "product")

ET.SubElement(doc, "id").text = "some value1"
ET.SubElement(doc, "name").text = "some vlaue1"

ET.SubElement(doc, "id").text = "some value2"
ET.SubElement(doc, "name").text = "some vlaue2"
tree = ET.ElementTree(root)
tree.write("filename.xml")

我想在根产品下创建不同的产品子元素。 任何有关如何实现这一目标的建议都会很棒。

2 个答案:

答案 0 :(得分:2)

SubElement的第一个参数是您追加新创建的元素的标记。在您的示例中,所有idname元素都会附加到您创建的第一个product - doc

尝试以相同的方式创建第二个并附加到那个,即添加

doc2 = ET.SubElement(root, "product")

并在第二组产品详细信息中为doc2切换doc

答案 1 :(得分:0)

如果需要插入位置,请使用插入

from xml.etree.ElementTree import Element,SubElement,Comment,tostring
from xml.dom.minidom import parseString

root = Element("products")
first = Element("product")
SubElement(first,"id").text="1"
SubElement(first,"name").text="Apple"

second = Element("product")
SubElement(second,"id").text="2"
SubElement(second,"name").text="Banana"
root.insert(1,first)
root.insert(2,second)
print(parseString(tostring(root,'utf-8')).toprettyxml(indent=" "))