我正在尝试使用带有以下输出的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")
我想在根产品下创建不同的产品子元素。 任何有关如何实现这一目标的建议都会很棒。
答案 0 :(得分:2)
SubElement
的第一个参数是您追加新创建的元素的标记。在您的示例中,所有id
和name
元素都会附加到您创建的第一个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=" "))