在x节点后插入minidom xml python



我正在将一个节点附加到xml中,但我希望它在一些标记之前插入,这可能吗?

newNode = xmldoc.createElement("tag2")
txt = xmldoc.createTextNode("value2")
newNode.appendChild(txt)
n.appendChild(newNode)

这是我的XML。当我附加子项时,它会添加到UniMed之后,我希望它插入到Cantidad之后和UniMed之前。(我的XML的简化版本)"Item"可以有更多的子项,我不知道有多少。

<ns0:Item>
      <ns0:Cantidad>1</ns0:Cantidad>
      <ns0:UniMed>L</ns0:UniMed>
</ns0:Item>

我想我可以通过阅读Item的所有子项来解决它,删除它们,然后按我想要的顺序添加它们。但我认为这不是最好的主意。。。

有什么想法吗?


编辑

解决方案

itemChildNodes = n.childNodes
n.insertBefore(newNode, itemChildNodes[itemChildNodes.length-2])

使用insertBefore方法插入新建的标记。

演示:

>>> from xml.dom import minidom
>>> content = """
... <xml>
...     <Item>
...           <Cantidad>1</Cantidad>
...           <UniMed>L</UniMed>
...     </Item>
... </xml>
... """
>>> root = minidom.parseString(content)
>>> insert_tag = root.createElement("tag2")
>>> htext = root.createTextNode('test')
>>> insert_tag.appendChild(htext)
<DOM Text node "'test'">
>>> 
>>> items = root.getElementsByTagName("Item")
>>> item = items[0]
>>> item_chidren = item.childNodes
>>> item.insertBefore(insert_tag, item_chidren[2])
<DOM Element: tag2 at 0xb700da8c>
>>> root.toxml()
u'<?xml version="1.0" ?><xml>nt<Item>nt      <Cantidad>1</Cantidad><tag2>test</tag2>nt      <UniMed>L</UniMed>nt</Item>n</xml>'
>>> 

相关内容

  • 没有找到相关文章

最新更新