remove element with ElementTree

Stefan Behnel stefan_ml at behnel.de
Tue Mar 9 10:45:48 EST 2010


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




More information about the Python-list mailing list