bpo-34160: Add the sort attribute to the xml.dom.minidom.Node.writexml method by matrixise · Pull Request #12354 · python/cpython (original) (raw)

Expand Up

@@ -847,27 +847,31 @@ def getElementsByTagNameNS(self, namespaceURI, localName):

def __repr__(self):

return "<DOM Element: %s at %#x>" % (self.tagName, id(self))

def writexml(self, writer, indent="", addindent="", newl=""):

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

# indent = current indentation

# addindent = indentation to add to higher levels

# newl = newline string

writer.write(indent+"<" + self.tagName)

attrs = self._get_attributes()

for a_name in attrs.keys():

attribute_names = attrs.keys()

if sort:

attribute_names = sorted(attribute_names)

for a_name in attribute_names:

writer.write(" %s=\"" % a_name)

_write_data(writer, attrs[a_name].value)

writer.write("\"")

if self.childNodes:

writer.write(">")

if (len(self.childNodes) == 1 and

self.childNodes[0].nodeType == Node.TEXT_NODE):

self.childNodes[0].writexml(writer, '', '', '')

self.childNodes[0].writexml(writer, '', '', '', sort=sort)

else:

writer.write(newl)

for node in self.childNodes:

node.writexml(writer, indent+addindent, addindent, newl)

node.writexml(writer, indent+addindent, addindent, newl, sort=sort)

writer.write(indent)

writer.write("</%s>%s" % (self.tagName, newl))

else:

Expand Down Expand Up

@@ -984,8 +988,8 @@ def _set_nodeName(self, value):

self.target = value

nodeName = property(_get_nodeName, _set_nodeName)

def writexml(self, writer, indent="", addindent="", newl=""):

writer.write("%s%s" % (indent,self.target, self.data, newl))

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

writer.write("%s%s" % (indent,self.target, self.data, newl), sort=sort)

class CharacterData(Childless, Node):

Expand Down Expand Up

@@ -1084,7 +1088,7 @@ def splitText(self, offset):

self.data = self.data[:offset]

return newText

def writexml(self, writer, indent="", addindent="", newl=""):

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

_write_data(writer, "%s%s%s" % (indent, self.data, newl))

# DOM Level 3 (WD 9 April 2002)

Expand Down Expand Up

@@ -1179,10 +1183,10 @@ def __init__(self, data):

CharacterData.__init__(self)

self._data = data

def writexml(self, writer, indent="", addindent="", newl=""):

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

if "--" in self.data:

raise ValueError("'--' is not allowed in a comment node")

writer.write("%s%s" % (indent, self.data, newl))

writer.write("%s%s" % (indent, self.data, newl), sort=sort)

class CDATASection(Text):

Expand All

@@ -1191,7 +1195,7 @@ class CDATASection(Text):

nodeType = Node.CDATA_SECTION_NODE

nodeName = "#cdata-section"

def writexml(self, writer, indent="", addindent="", newl=""):

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

if self.data.find("]]>") >= 0:

raise ValueError("']]>' not allowed in a CDATA section")

writer.write("<![CDATA[%s]]>" % self.data)

Expand Down Expand Up

@@ -1324,7 +1328,7 @@ def cloneNode(self, deep):

else:

return None

def writexml(self, writer, indent="", addindent="", newl=""):

def writexml(self, writer, indent="", addindent="", newl="", sort=False):

writer.write("<!DOCTYPE ")

writer.write(self.name)

if self.publicId:

Expand Down Expand Up

@@ -1786,14 +1790,14 @@ def importNode(self, node, deep):

raise xml.dom.NotSupportedErr("cannot import document type nodes")

return _clone_node(node, deep, self)

def writexml(self, writer, indent="", addindent="", newl="", encoding=None):

def writexml(self, writer, indent="", addindent="", newl="", encoding=None, sort=False):

if encoding is None:

writer.write(''+newl)

else:

writer.write('%s' % (

encoding, newl))

for node in self.childNodes:

node.writexml(writer, indent, addindent, newl)

node.writexml(writer, indent, addindent, newl, sort=sort)

# DOM Level 3 (WD 9 April 2002)

Expand Down