Patch #103854: raises an exception if a non-Attr node is passed to

NamedNodeMap.setNamedItem().  Martin, should I sync the PyXML tree, too,
 or do you want to do it?  (I don't know if you're wrapping the 0.6.4
 release right now.)
This commit is contained in:
Andrew M. Kuchling 2001-02-21 01:30:26 +00:00
parent 8b94b1c74a
commit bc8f72cccc
2 changed files with 14 additions and 0 deletions

View File

@ -98,6 +98,17 @@ def testLegalChildren():
else: else:
print "dom.appendChild didn't raise HierarchyRequestErr" print "dom.appendChild didn't raise HierarchyRequestErr"
nodemap = elem.attributes
try: nodemap.setNamedItem(text)
except HierarchyRequestErr: pass
else:
print "NamedNodeMap.setNamedItem didn't raise HierarchyRequestErr"
try: nodemap.setNamedItemNS(text)
except HierarchyRequestErr: pass
else:
print "NamedNodeMap.setNamedItemNS didn't raise HierarchyRequestErr"
elem.appendChild(text) elem.appendChild(text)
dom.unlink() dom.unlink()

View File

@ -378,6 +378,9 @@ class NamedNodeMap:
self.setNamedItem(node) self.setNamedItem(node)
def setNamedItem(self, node): def setNamedItem(self, node):
if not isinstance(node, Attr):
raise HierarchyRequestErr, \
"%s cannot be child of %s" % (repr(node), repr(self))
old = self._attrs.get(node.name) old = self._attrs.get(node.name)
if old: if old:
old.unlink() old.unlink()