2012-12-27 106 views
4

我讀過remove示例here,示例here不適用於我。如何使用Python中的ElementTree在xml中刪除節點?

我的XML文件中讀取:

<A> 
    <B>some text</B> 
    <B>other text</B> 
    <B>more text</B> 
</A> 

我想要做的是從XML中除去第二<B></B>。我不知道它擁有什麼文本。但我有<B></B>的索引,比如index = 1,這意味着我想刪除第二個元素(或節點)。

我有這樣的代碼:

F = open('example.xml') 
self.tree = parse(F) 
self.root = self.tree.getroot() 
F.close() 

因此,在這種情況下,我想刪除是self.root[1]

這是如何使用ElementTree實現的?

編輯:使我的問題更清晰明確。

回答

5
In [1]: import xml.etree.ElementTree as ET 

In [2]: xmlstr=\ 
    ...: """ 
    ...: <A> 
    ...: <B>some text</B> 
    ...: <B>other text</B> 
    ...: <B>more text</B> 
    ...: </A> 
    ...: """ 

In [3]: tree=ET.fromstring(xmlstr) 

In [4]: tree.remove(tree.findall('.//B')[1]) 
2

你們不是直截了當的。我和答案在這裏結合我的知識,並與該出來了:

for i, child in enumerate(self.root): 
    if path == i: 
     self.root.remove(child) 
     break 

其中path是我想刪除的項目的索引。

+0

@ elwz - 那怎麼比'tree.remove(tree.findall('.// B')[1])'好? – root

+1

我的歉意。它現在工作。只是我對樹和根(最初在問題中)感到困惑。我會給你榮譽。 – elwc