tags:

views:

34

answers:

1

So I have some XML like this:

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

And I want to remove all the foo nodes. Something like this doesn't work

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

Giving

ValueError: Element is not a child of this node.

What is a neat way to do this?

+1  A: 

try:

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

remove it from it's parent, not the root ( unless it IS a child of the root element )

Steven D. Majewski
This works a treat. Thanks
Michael Anderson