diff --git a/Lib/test/test_minidom.py b/Lib/test/test_minidom.py --- a/Lib/test/test_minidom.py +++ b/Lib/test/test_minidom.py @@ -6,7 +6,7 @@ import unittest import xml.dom.minidom -from xml.dom.minidom import parse, Node, Document, parseString +from xml.dom.minidom import parse, Node, Document, Element, parseString from xml.dom.minidom import getDOMImplementation @@ -1521,6 +1521,13 @@ class MinidomTest(unittest.TestCase): num_children_after = len(doc.childNodes) self.assertTrue(num_children_after == num_children_before - 1) + def testElementSetAttribute(self): + # Some third-party libraries create elements directly. + e = Element("span") + e.setAttribute("class", "version") + self.assertEqual(e.getAttribute("class"), "version") + + def test_main(): run_unittest(MinidomTest) diff --git a/Lib/xml/dom/minidom.py b/Lib/xml/dom/minidom.py --- a/Lib/xml/dom/minidom.py +++ b/Lib/xml/dom/minidom.py @@ -685,6 +685,7 @@ class Element(Node): self.namespaceURI = namespaceURI self.childNodes = NodeList() self.nextSibling = self.previousSibling = None + self.ownerDocument = None # Attribute dictionaries are lazily created # attributes are double-indexed: