This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Title: xml.dom.minidom.Element.cloneNode fails with AttributeError
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.5
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: Alexandre.Zani, Claudiu.Popa, Craig Rodrigues, berker.peksag, exarkun, loewis
Priority: normal Keywords: needs review, patch

Created on 2009-01-05 22:00 by exarkun, last changed 2022-04-11 14:56 by admin. This issue is now closed.

File name Uploaded Description Edit
orphan_node_clone.patch Alexandre.Zani, 2012-05-20 19:19 Patch fix review
Messages (5)
msg79203 - (view) Author: Jean-Paul Calderone (exarkun) * (Python committer) Date: 2009-01-05 22:00
It seems impossible to clone an Element created without a document:

  >>> Element('foo').cloneNode(False)
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.5/xml/dom/", line 211, in cloneNode
      return _clone_node(self, deep, self.ownerDocument or self)
    File "/usr/lib/python2.5/xml/dom/", line 1814, in _clone_node
      if node.ownerDocument.isSameNode(newOwnerDocument):
  AttributeError: 'NoneType' object has no attribute 'isSameNode'

The documentation claims that cloneNode was fixed for releases
"subsequent" to 2.0, but this doesn't appear to be true.

A similar issue occurs when attempting to import a node into a document
(something I tried as a work-around for this failure):

  >>> d.importNode(e, False)
  Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "/usr/lib/python2.5/xml/dom/", line 1737, in importNode
      return _clone_node(node, deep, self)
    File "/usr/lib/python2.5/xml/dom/", line 1814, in _clone_node
      if node.ownerDocument.isSameNode(newOwnerDocument):
  AttributeError: 'NoneType' object has no attribute 'isSameNode'
msg109606 - (view) Author: Mark Lawrence (BreamoreBoy) * Date: 2010-07-08 21:17
Has this simply slipped under the radar?
msg161225 - (view) Author: Alexandre Zani (Alexandre.Zani) Date: 2012-05-20 19:19
This patch allows the cloning of elements that do not have a document owner.

If a node does not have a document owner, a new document owner is created for the clone.
msg289058 - (view) Author: Craig Rodrigues (Craig Rodrigues) Date: 2017-03-06 02:27
This looks like a duplicate of .

15290 was closed as invalid, and the submitter was told that the
code should be changed to not rely on creating elements outside
of the document interface.

I encountered the same problem when trying to port Twisted to Python 3.
msg289663 - (view) Author: Berker Peksag (berker.peksag) * (Python committer) Date: 2017-03-15 10:38
Thanks for your detective work, Craig. MvL is correct that those classes should be created via a Document object. I'm marking issue 15290 as a duplicate of this.

Note that we can reopen this if you'd like to propose a documentation patch or PR to make the current docs clearer. Thanks!
Date User Action Args
2022-04-11 14:56:43adminsetgithub: 49101
2017-03-15 10:38:34berker.peksagsetstatus: open -> closed

nosy: + berker.peksag
messages: + msg289663

resolution: not a bug
stage: patch review -> resolved
2017-03-15 10:38:12berker.peksaglinkissue15290 superseder
2017-03-06 02:27:20Craig Rodriguessetnosy: + Craig Rodrigues
messages: + msg289058
2015-03-07 19:12:06Claudiu.Popasetnosy: + Claudiu.Popa

versions: + Python 3.5, - Python 2.7, Python 3.2, Python 3.3
2014-02-03 19:11:54BreamoreBoysetnosy: - BreamoreBoy
2012-05-21 03:36:54eric.araujosetkeywords: + needs review
stage: needs patch -> patch review
versions: + Python 3.3, - Python 3.1
2012-05-20 19:19:29Alexandre.Zanisetfiles: + orphan_node_clone.patch
keywords: + patch
messages: + msg161225
2011-05-03 16:38:06Alexandre.Zanisetnosy: + Alexandre.Zani
2010-07-08 21:17:04BreamoreBoysetversions: + Python 3.1, Python 2.7, Python 3.2
nosy: + loewis, BreamoreBoy

messages: + msg109606

stage: needs patch
2009-01-05 22:00:10exarkuncreate