--- ElementTree.py 2006-08-02 15:37:08.000000000 +0100 +++ ElementTreeSRH.py 2008-11-14 14:16:07.415323200 +0000 @@ -657,30 +657,30 @@ if not hasattr(file, "write"): file = open(file, "wb") if not encoding: encoding = "us-ascii" elif encoding != "utf-8" and encoding != "us-ascii": - file.write("\n" % encoding) + file.write(_encode("\n" % (encoding),encoding)) self._write(file, self._root, encoding, {}) def _write(self, file, node, encoding, namespaces): # write XML to file tag = node.tag if tag is Comment: - file.write("" % _escape_cdata(node.text, encoding)) + file.write(_escape_cdata("" % (node.text), encoding)) elif tag is ProcessingInstruction: - file.write("" % _escape_cdata(node.text, encoding)) + file.write( _escape_cdata("" % (node.text), encoding)) else: items = node.items() xmlns_items = [] # new namespaces in this scope try: if isinstance(tag, QName) or tag[:1] == "{": tag, xmlns = fixtag(tag, namespaces) if xmlns: xmlns_items.append(xmlns) except TypeError: _raise_serialization_error(tag) - file.write("<" + _encode(tag, encoding)) + file.write(_encode("<" +tag, encoding)) if items or xmlns_items: items.sort() # lexical order for k, v in items: try: if isinstance(k, QName) or k[:1] == "{": @@ -692,24 +692,30 @@ if isinstance(v, QName): v, xmlns = fixtag(v, namespaces) if xmlns: xmlns_items.append(xmlns) except TypeError: _raise_serialization_error(v) - file.write(" %s=\"%s\"" % (_encode(k, encoding), - _escape_attrib(v, encoding))) + file.write("%s%s%s%s%s" % (_encode(" ", encoding), + _encode(k, encoding), + _encode("=\"", encoding), + _escape_attrib(v, encoding), + _encode("\"", encoding))) for k, v in xmlns_items: - file.write(" %s=\"%s\"" % (_encode(k, encoding), - _escape_attrib(v, encoding))) + file.write("%s%s%s%s%s" % (_encode(" ", encoding), + _encode(k, encoding), + _encode("=\"", encoding), + _escape_attrib(v, encoding), + _encode("\"", encoding))) if node.text or len(node): - file.write(">") + file.write(_encode(">",encoding)) if node.text: file.write(_escape_cdata(node.text, encoding)) for n in node: self._write(file, n, encoding, namespaces) - file.write("") + file.write(_encode("", encoding)) else: - file.write(" />") + file.write(_encode(" />",encoding)) for k, v in xmlns_items: del namespaces[v] if node.tail: file.write(_escape_cdata(node.tail, encoding))