XML文档没有更新



我有一个小XML文件,看起来像这样:

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

,我想在两个<items></items>下添加一个新项目<item id = "new item" />。这是我的代码:

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

注:我可以采取<items></items>和使用的项目。appendChild,但我需要<item></item>元素稍后。这就是为什么使用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块都添加了新元素,但是Document节点'doc'只显示第二个items块下的项。链接到Ideone上的代码

我做错了什么?

同一个元素不能出现在多个地方。当追加到第二个节点时,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())

相关内容

  • 没有找到相关文章

最新更新