Как я могу удалить все элементы, соответствующие xpath в Python с помощью lxml?

Таким образом, у меня есть некоторый XML как это:

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

И я хочу удалить все узлы нечто. Что-то вроде этого не работает

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

Предоставление

ValueError: Element is not a child of this node.

Что аккуратный путь состоит в том, чтобы сделать это?

13
задан Michael Anderson 29 July 2010 в 02:49
поделиться

1 ответ

попробуйте:

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

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

19
ответ дан 1 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: