在中间插入子元素
我想用Python的minidom来往一个XML文件里添加一个元素。假设我有以下这个XML文件:
<node-a>
<node-1/>
<node-2/>
<node-3/>
<node-a/>
在这种情况下,我可以很简单地在最后添加一个名为“node-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/>
1 个回答
4
你可以使用 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>