Как я могу удалить все элементы, соответствующие xpath в python, используя lxml? - PullRequest
13 голосов
/ 29 июля 2010

Итак, у меня есть такой 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 Ответ

19 голосов
/ 29 июля 2010

попробовать:

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

удали его из родительского, а не корневого (если это не дочерний элемент корневого элемента)

...