Here's a trimmed down version of how I did this (using ElementTree standalone, but the API should be the same) This is from a class definition and the _elem attribute is a link to an ElementTree.Element object.
... def _add_elem(self, tagName, text, attrib ={}): """_add_elem(tagName, text, attrib={}) Adds a child element in the appropriate place in the tree. Raises an IndexError if the checker does not allow an addition child of tagName. """ last_child = None for child in self._elem.findall('.//%s' % tagName): last_child = child if last_child is None: new_child = ET.SubElement(self._elem, tagName, attrib) else: new_child = ET.Element(tagName, attrib) self._elem.insert(self._elem._children.index(last_child)+1, new_child) new_child.text=str(text) return new_child I don't think you need to count the instances of the bingo node (unless you want to prevent too many from being added in). Josh -- http://mail.python.org/mailman/listinfo/python-list