2014-01-17 144 views
1

我在看片的XML。兄弟節點在Python

<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節點到它。但是,我無法將其插入到確切位置。

有沒有辦法找到我是否在某個節點旁邊,無論是在之前還是之後。假設我想在<dino>0</dino><pineapples>2</pineapples>節點之間添加<snail>2</snail>

使用ElementTree如何找到我旁邊的節點?我在詢問ElementTree或任何標準的Python庫。不幸的是,lxml對我來說是不可能的。

回答

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

如果你知道父元素之前插入元素,您可以使用ElementTree的以下方法:

index = parentElem.getchildren().index(elemToInsertBefore) 
parent.insert(index, newElement)