2010-07-29 31 views
13

Vì vậy, tôi có một số XML như thế này:Làm cách nào tôi có thể xóa tất cả các phần tử khớp với một xpath trong python bằng cách sử dụng lxml?

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

Và tôi muốn loại bỏ tất cả các nút foo. Một cái gì đó như thế này không hoạt động

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

Giving

ValueError: Element is not a child of this node. 

một cách gọn gàng để làm điều này là gì?

Trả lời

17

thử:

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

loại bỏ nó khỏi nó phụ huynh, không phải là gốc (trừ khi nó là con của phần tử gốc)

+1

này hoạt động một điều trị. Cảm ơn –

Các vấn đề liên quan