Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

XML: remove child node of a node

Tags:

python

I want to find all nodes in a xml file that have a certain tag-name, lets say "foo". If those foo-tags have them thelves child nodes with node-name "bar", then I want to remove those nodes. The result should be written to a file.

<myDoc>
  <foo>
    <bar/> // remove this one
  </foo>
  <foo>
    <anyThing>
      <bar/> // don't remove this one
    </anyThing>
  </foo>
</myDoc> 

Thanx for any hints. As the tag indicates, I would like to do this with python.

like image 615
nebenmir Avatar asked Apr 19 '10 09:04

nebenmir


1 Answers

You can use ElementTree:

from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse('in.xml')

foos = tree.findall('foo')
for foo in foos:
  bars = foo.findall('bar')
  for bar in bars:
    foo.remove(bar)

tree.write('out.xml')
like image 72
miles82 Avatar answered Sep 17 '22 23:09

miles82