remove element with ElementTree

T

tdan

I have been using ElementTree to write an app, and would like to
simply remove an element.
But in ElementTree, you must know both the parent and the child
element to do this.
There is no getparent() function, so I am stuck if I only have an
element.

I am iterating over a table and getting all <td> tags, checking their
text, and conditionally deleting them:

def RemoveElementWithText( topEl, subEl, text ):
for el in topEl.getiterator( subEl ):
if el.text = text:
break
else:
el = None
return el

RemoveElementWithText( table, 'td', 'sometext' )

My table is like so:

<table>
<thead>...
<tbody><tr><td>...

Is there any way to do this in ElementTree? I see lxml.etree does
this nicely, but I want to use python's standard library.
 
S

Stefan Behnel

tdan, 09.03.2010 04:35:
I have been using ElementTree to write an app, and would like to
simply remove an element.
But in ElementTree, you must know both the parent and the child
element to do this.
There is no getparent() function, so I am stuck if I only have an
element.

I am iterating over a table and getting all<td> tags, checking their
text, and conditionally deleting them:

def RemoveElementWithText( topEl, subEl, text ):

Note that all-camel-case names are rather unusual for function names and
rather used for class names. See PEP 8 for a style guide.

for el in topEl.getiterator( subEl ):
if el.text = text:
break
else:
el = None
return el

RemoveElementWithText( table, 'td', 'sometext' )

My table is like so:

<table>
<thead>...
<tbody><tr><td>...

Is there any way to do this in ElementTree?

I think the easiest is to iterate not over the elements themselves, but
over their parents, and then to remove all children of the specified tag in
each step.

Stefan
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,968
Messages
2,570,149
Members
46,695
Latest member
StanleyDri

Latest Threads

Top