我正在查看我想要添加节点的XML片段。
<profile>
<dog>1</dog>
<halfdog>0</halfdog>
<cat>545</cat>
<lions>0</lions>
<bird>23</bird>
<dino>0</dino>
<pineapples>2</pineapples>
<people>0</people>
</profile>
使用上面的XML,我可以在其中插入XML节点。但是,我无法在确切的位置插入它。
有没有办法找到我是否在某个节点旁边,无论是在之前还是之后。假设我想在<snail>2</snail>
和<dino>0</dino>
节点之间添加<pineapples>2</pineapples>
。
使用ElementTree
如何找到我旁边的节点?我问的是ElementTree
或任何标准的Python库。不幸的是,lxml
对我来说是不可能的。
答案 0 :(得分:3)
我认为使用ElementTree不可行,但您可以使用标准python minidom来完成:
# create snail element
snail = dom.createElement('snail')
snail_text = dom.createTextNode('2')
snail.appendChild(snail_text)
# add it in the right place
profile = dom.getElementsByTagName('profile')[0]
pineapples = dom.getElementsByTagName('pineapples')[0]
profile.insertBefore(snail, pineapples)
输出:
<?xml version="1.0" ?><profile>
<dog>1</dog>
<halfdog>0</halfdog>
<cat>545</cat>
<lions>0</lions>
<bird>23</bird>
<dino>0</dino>
<snail>2</snail><pineapples>2</pineapples>
<people>0</people>
</profile>
答案 1 :(得分:2)
如果您知道父元素和之前要插入的元素,则可以对ElementTree使用以下方法:
index = parentElem.getchildren().index(elemToInsertBefore)
parent.insert(index, newElement)