如何使用lxml删除python中与xpath匹配的所有元素?

Mic*_*son 13 python lxml

所以我有一些像这样的XML:

<bar>
  <foo>Something</foo>
  <baz>
     <foo>Hello</foo>
     <zap>Another</zap>
  <baz>
<bar>
Run Code Online (Sandbox Code Playgroud)

我想删除所有foo节点.像这样的东西不起作用

params = xml.xpath('//foo')
for n in params:
  xml.getroot().remove(n)
Run Code Online (Sandbox Code Playgroud)

给予

ValueError: Element is not a child of this node.
Run Code Online (Sandbox Code Playgroud)

什么是一个巧妙的方法来做到这一点?

Ste*_*ski 19

尝试:

 for elem in xml.xpath( '//foo' ) :
      elem.getparent().remove(elem)
Run Code Online (Sandbox Code Playgroud)

从它的父节点而不是根节点中删除它(除非它是根元素的子节点)