2010-07-29 73 views
13

所以我有一些這樣的XML:如何使用lxml刪除所有在python中匹配xpath的元素?

<bar> 
    <foo>Something</foo> 
    <baz> 
    <foo>Hello</foo> 
    <zap>Another</zap> 
    <baz> 
<bar> 

而且我要刪除所有foo的節點。像這樣的東西不起作用

params = xml.xpath('//foo') 
for n in params: 
    xml.getroot().remove(n) 

給予

ValueError: Element is not a child of this node. 

什麼是整潔的方式做到這一點?

回答

17

嘗試:

for elem in xml.xpath('//foo') : 
     elem.getparent().remove(elem) 

刪除它從它的父,不是根 (除非它是根元素的子元素)

+1

此作品一種享受。謝謝 – 2010-07-29 03:59:05

相關問題