如何在Python中使用lxml删除所有匹配的xpath元素?
我有一些这样的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)
把它从它的父元素中移除,而不是从根元素中移除(除非它确实是根元素的子元素)