diff -r 76445d7e613f Lib/test/test_minidom.py --- a/Lib/test/test_minidom.py Sun May 20 15:37:33 2012 +0100 +++ b/Lib/test/test_minidom.py Fri Jun 01 21:59:44 2012 -0700 @@ -1521,6 +1521,37 @@ num_children_after = len(doc.childNodes) self.assertTrue(num_children_after == num_children_before - 1) + def testElementConstructor(self): + dom = parse(tstfile) + child1 = dom.createComment("Hello 1") + child2 = dom.createComment("Hello 2") + + attributes = { + "first": "1", + "second": "2", + } + + attributesNS = { + ("http://www.w3.org", "xmlns:python"): "http://www.python.org", + } + + element = xml.dom.minidom.Element( + "some_tag", + childNodes=[child1, child2], + attributes=attributes, + attributesNS=attributesNS) + + self.assertEquals(child1.data, element.childNodes[0].data) + self.assertEquals(child2.data, element.childNodes[1].data) + + for name, value in attributes.items(): + self.assertEquals(value, element.getAttribute(name)) + + self.assertEquals( + element.getAttributeNS( + "http://www.w3.org", "python"), + "http://www.python.org") + def test_main(): run_unittest(MinidomTest) diff -r 76445d7e613f Lib/xml/dom/minidom.py --- a/Lib/xml/dom/minidom.py Sun May 20 15:37:33 2012 +0100 +++ b/Lib/xml/dom/minidom.py Fri Jun 01 21:59:44 2012 -0700 @@ -678,12 +678,17 @@ Node.ENTITY_REFERENCE_NODE) def __init__(self, tagName, namespaceURI=EMPTY_NAMESPACE, prefix=None, - localName=None): + localName=None, childNodes=None, attributes=None, + attributesNS=None): + self.ownerDocument = None self.parentNode = None self.tagName = self.nodeName = tagName self.prefix = prefix self.namespaceURI = namespaceURI self.childNodes = NodeList() + if childNodes: + for child in childNodes: + self.appendChild(child) self.nextSibling = self.previousSibling = None # Attribute dictionaries are lazily created @@ -696,6 +701,13 @@ # namespaces. self._attrs = None self._attrsNS = None + if attributes: + for name, value in attributes.items(): + self.setAttribute(name, value) + + if attributesNS: + for (namespace, name), value in attributesNS.items(): + self.setAttributeNS(namespace, name, value) def _ensure_attributes(self): if self._attrs is None: