Index: Lib/test/test_minidom.py
===================================================================
--- Lib/test/test_minidom.py (revision 69418)
+++ Lib/test/test_minidom.py (working copy)
@@ -459,11 +459,24 @@
self.confirm(str == domstr)
def testAltNewline(self):
- str = '\n\n'
+ str = '\n'
dom = parseString(str)
domstr = dom.toprettyxml(newl="\r\n")
dom.unlink()
self.confirm(domstr == str.replace("\n", "\r\n"))
+
+ def testPrettyPrinting(self):
+ str = '\nText node1Sub textnode'
+ dom = parseString(str)
+ domstr = dom.toprettyxml(indent=" ",newl="\n")
+ dom.unlink()
+ dom = parseString(domstr)
+ domstr2 = dom.toprettyxml(indent=" ",newl="\n")
+ dom.unlink()
+ self.confirm(domstr == domstr2)
+ self.confirm(domstr == u'\n\n \n \n Text node1Sub textnode\n \n \n \n')
+
+
def testProcessingInstruction(self):
dom = parseString('')
Index: Lib/xml/dom/minidom.py
===================================================================
--- Lib/xml/dom/minidom.py (revision 69418)
+++ Lib/xml/dom/minidom.py (working copy)
@@ -801,23 +801,32 @@
# indent = current indentation
# addindent = indentation to add to higher levels
# newl = newline string
- writer.write(indent+"<" + self.tagName)
+ writer.write(newl+indent+"<" + self.tagName)
attrs = self._get_attributes()
a_names = attrs.keys()
a_names.sort()
+ onetextnode = False
for a_name in a_names:
writer.write(" %s=\"" % a_name)
_write_data(writer, attrs[a_name].value)
writer.write("\"")
if self.childNodes:
- writer.write(">%s"%(newl))
+ writer.write(">")
+ lastnodetype=self.childNodes[0].nodeType
for node in self.childNodes:
- node.writexml(writer,indent+addindent,addindent,newl)
- writer.write("%s%s>%s" % (indent,self.tagName,newl))
+ if lastnodetype==node.TEXT_NODE:
+ node.writexml(writer,"","","")
+ else:
+ node.writexml(writer, ("%s%s") % (indent,addindent), addindent, newl)
+ lastnodetype=node.nodeType
+ if lastnodetype==node.TEXT_NODE:
+ writer.write("%s>" % (self.tagName))
+ else:
+ writer.write("%s%s%s>" % (newl,indent,self.tagName))
else:
- writer.write("/>%s"%(newl))
+ writer.write("/>")
def _get_attributes(self):
return NamedNodeMap(self._attrs, self._attrsNS, self)
@@ -1033,7 +1042,7 @@
return newText
def writexml(self, writer, indent="", addindent="", newl=""):
- _write_data(writer, "%s%s%s"%(indent, self.data, newl))
+ _write_data(writer, "%s"%(self.data))
# DOM Level 3 (WD 9 April 2002)
@@ -1742,9 +1751,9 @@
def writexml(self, writer, indent="", addindent="", newl="",
encoding = None):
if encoding is None:
- writer.write(''+newl)
+ writer.write('')
else:
- writer.write('%s' % (encoding, newl))
+ writer.write('' % (encoding))
for node in self.childNodes:
node.writexml(writer, indent, addindent, newl)