2014-04-22 104 views
3

我想使用Python中的minidom將元素添加到XML文件中。 假設我在這種情況下,下面的XML文件在中間追加孩子

<node-a> 
    <node-1/> 
    <node-2/> 
    <node-3/> 
<node-a/> 

我可以很容易地附加一個元件 「節點-4」 作爲跟着

node4 = designDOM.createElement('node-4') 
nodea.appendChild(node4) 

下列與XML所得:

<node-a> 
    <node-1/> 
    <node-2/> 
    <node-3/> 
    <node-4/> 
<node-a/> 

我的問題是:如果我想強制將元素插入特定位置而不是最後......我應該怎麼做?例如,如果我想要一個元素「2-a」,如下面的XML我做什麼?

<node-a> 
    <node-1/> 
    <node-2/> 
    <node-2a/> 
    <node-3/> 
    <node-4/> 
<node-a/> 

回答

3

您可以使用insertBefore()

import xml.dom.minidom 

data = """<node-a> 
    <node-1/> 
    <node-2/> 
    <node-3/> 
</node-a>""" 

dom = xml.dom.minidom.parseString(data) 
node_a = dom.getElementsByTagName('node-a')[0] 

node_4 = dom.createElement('node-4') 
node_a.appendChild(node_4) 

node_3 = dom.getElementsByTagName('node-3')[0] 
node2_a = dom.createElement('node-2a') 
node_a.insertBefore(node2_a, node_3) 

print dom.toprettyxml() 

打印:

<node-a> 
    <node-1/> 
    <node-2/> 
    <node-2a/> 
    <node-3/> 
    <node-4/> 
</node-a>