Python 未在minidom中更新xml文档

Python 未在minidom中更新xml文档,python,xml,minidom,Python,Xml,Minidom,我有一个小XML文件,如下所示: <cart> <items> <item id="1" /> </items> <items> <item id="2" /> </items> </cart> 我想在这两个下添加一个新项目。这是我的代码: doc = minidom.parseString('<cart><items>&l

我有一个小XML文件,如下所示:

<cart>
   <items>
      <item id="1" />
   </items>
   <items>
      <item id="2" />
   </items>
</cart>

我想在这两个
下添加一个新项目
。这是我的代码:

doc = minidom.parseString('<cart><items><item id="1" /></items><items><item id="2" /></items></cart>')

newItem = doc.createElement('item')
newItem.setAttribute('id', 'new item')

items = doc.getElementsByTagName('item')
for item in items:
    item.parentNode.appendChild(newItem)
    print(item.parentNode.toxml())
print(doc.toprettyxml())
doc=minidom.parseString(“”)
newItem=doc.createElement('item')文件
setAttribute('id','newItem')
items=doc.getElementsByTagName('item')
对于项目中的项目:
item.parentNode.appendChild(newItem)
打印(item.parentNode.toxml())
打印(doc.toprettyxml())
注意:我本可以使用items.appendChild,但以后需要
元素。这就是为什么要使用parentNode.appendChild

这是我得到的输出

    <items><item id="1"/><item id="new item"/></items>
    <items><item id="2"/><item id="new item"/></items>
    <cart>
   <items>
      <item id="1" />
   </items>
   <items>
      <item id="2" />
      <item id="new item" />
   </items>
</cart>

前两行是循环中print语句的输出

请参见,新元素不会添加到第一个items块下。但是,for循环中的print语句显示两个items块都添加了新元素,但是文档节点“doc”仅显示第二个items块下的项。链接到上的代码


我做错了什么有什么帮助吗

不能在多个位置使用同一元素。当您附加到第二个节点时,newItem将从第一个节点中删除。您可以改为复制节点:

doc = minidom.parseString('<cart><items><item id="1" /></items><items><item id="2" /></items></cart>')

newItem = doc.createElement('item')
newItem.setAttribute('id', 'new item')

items = doc.getElementsByTagName('item')
for item in items:
    item.parentNode.appendChild(newItem.cloneNode(True))
    print(item.parentNode.toxml())
print(doc.toprettyxml())
doc=minidom.parseString(“”)
newItem=doc.createElement('item')文件
setAttribute('id','newItem')
items=doc.getElementsByTagName('item')
对于项目中的项目:
item.parentNode.appendChild(newItem.cloneNode(True))
打印(item.parentNode.toxml())
打印(doc.toprettyxml())

Oooops!谢谢,我不知道