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

13 投票
1 回答
8399 浏览
提问于 2025-04-16 02:00

我有一些这样的XML内容:

<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.

有没有什么好的方法可以做到这一点?

1 个回答

21

尝试:

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

把它从它的父元素中移除,而不是从根元素中移除(除非它确实是根元素的子元素)

撰写回答