[XML-SIG] DOM Considered Harmful :-)

Sean Mc Grath sean@digitome.com
Tue, 04 May 1999 14:19:39 +0100

[Greg Stein]
>2) the close() method and parent/sibling relationships
>Adding parent/sibling relationships introduces loops unless you use
>proxies or introduce a close() method (if there is another way, then I'd
>like to learn it).

In LumberJack, a collection of nodes (LJNode objects) are 
associated with a tree object known as an LJTree. When the
reference count of an LJTree shrinks to zero LumberJack
walks the associated, doubly linked LJnodes and
breaks the double links:-

	def __del__(self):
		self.Home() # Move current position to root of tree
		from LJUtils import DescendantsInclusive
		for item in DescendantsInclusive(self): # iterate a node list
			item.node.North = None # break all links
			item.node.South = None
			item.node.East = None
			item.node.West = None

<Sean URI="http://www.digitome.com/sean.htm">