mirror of
https://github.com/python/cpython.git
synced 2025-10-31 21:51:50 +00:00
give minidom.py behaviour that complies with the DOM Level 1 REC,
which says that when a node newChild is added to the tree, "if the
newChild is already in the tree, it is first removed."
pulldom.py is patched to use the public minidom interface instead
of setting .parentNode itself. Possibly this reduces pulldom's
efficiency; someone else will have to pronounce on that.
This commit is contained in:
parent
34c20cf705
commit
04a45e9bb1
2 changed files with 42 additions and 10 deletions
|
|
@ -55,7 +55,9 @@ def startElementNS(self, name, tagName , attrs):
|
|||
attr.value = value
|
||||
node.setAttributeNode(attr)
|
||||
|
||||
node.parentNode = self.curNode
|
||||
## print self.curNode, self.curNode.childNodes, node, node.parentNode
|
||||
self.curNode.appendChild(node)
|
||||
# node.parentNode = self.curNode
|
||||
self.curNode = node
|
||||
|
||||
self.lastEvent[1] = [(START_ELEMENT, node), None]
|
||||
|
|
@ -77,7 +79,8 @@ def startElement(self, name, attrs):
|
|||
attr.value = value
|
||||
node.setAttributeNode(attr)
|
||||
|
||||
node.parentNode = self.curNode
|
||||
#node.parentNode = self.curNode
|
||||
self.curNode.appendChild(node)
|
||||
self.curNode = node
|
||||
|
||||
self.lastEvent[1] = [(START_ELEMENT, node), None]
|
||||
|
|
@ -93,8 +96,9 @@ def endElement(self, name):
|
|||
|
||||
def comment(self, s):
|
||||
node = self.document.createComment(s)
|
||||
parent = self.curNode
|
||||
node.parentNode = parent
|
||||
self.curNode.appendChild(node)
|
||||
# parent = self.curNode
|
||||
# node.parentNode = parent
|
||||
self.lastEvent[1] = [(COMMENT, node), None]
|
||||
self.lastEvent = self.lastEvent[1]
|
||||
#self.events.append((COMMENT, node))
|
||||
|
|
@ -102,24 +106,27 @@ def comment(self, s):
|
|||
def processingInstruction(self, target, data):
|
||||
node = self.document.createProcessingInstruction(target, data)
|
||||
|
||||
parent = self.curNode
|
||||
node.parentNode = parent
|
||||
self.curNode.appendChild(node)
|
||||
# parent = self.curNode
|
||||
# node.parentNode = parent
|
||||
self.lastEvent[1] = [(PROCESSING_INSTRUCTION, node), None]
|
||||
self.lastEvent = self.lastEvent[1]
|
||||
#self.events.append((PROCESSING_INSTRUCTION, node))
|
||||
|
||||
def ignorableWhitespace(self, chars):
|
||||
node = self.document.createTextNode(chars)
|
||||
parent = self.curNode
|
||||
node.parentNode = parent
|
||||
self.curNode.appendChild(node)
|
||||
# parent = self.curNode
|
||||
# node.parentNode = parent
|
||||
self.lastEvent[1] = [(IGNORABLE_WHITESPACE, node), None]
|
||||
self.lastEvent = self.lastEvent[1]
|
||||
#self.events.append((IGNORABLE_WHITESPACE, node))
|
||||
|
||||
def characters(self, chars):
|
||||
node = self.document.createTextNode(chars)
|
||||
parent = self.curNode
|
||||
node.parentNode = parent
|
||||
self.curNode.appendChild(node)
|
||||
# parent = self.curNode
|
||||
# node.parentNode = parent
|
||||
self.lastEvent[1] = [(CHARACTERS, node), None]
|
||||
self.lastEvent = self.lastEvent[1]
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue