[XML-SIG] Help with removeChild()

Michael Hammill mike@pdc.kth.se
Thu, 10 May 2001 16:03:40 +0200

Dear Thomas,

Your solution below works great!   I have discovered something else quite 
instructive (at least to me).  When I first saw your solution, I thought 
"oh, I've tried that already".  Silly of me.  What I had tried was not 
exactly the same, but seemingly close.  I had set children = 
node.childNodes *without* the final '[:]'.  In testing the solution below, 
I found that if the [:] is left out, the result is the same as I got before 
(an incorrect trimming); however, with the [:] it works fine.  I'm sorry if 
this is a newbe kind of confusion.  I had always thought "list" was 
equivalent to "list[:]", but apparently not.

Thank you again!

>  Try this:
>  def trim_dom_more(node):
>      if node.hasChildNodes():
>          children=node.childNodes[:]
>          for child in children:
>              trim_dom_more(child)
>Now you are iterating through a static copy of the list.  It wouldn't work
>if the child nodes could get changed by another thread, but I don't suppose
>that's going to happen here.