在中间插入子元素

5 投票
1 回答
2043 浏览
提问于 2025-04-18 03:45

我想用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>

撰写回答