def toString(self, align = 4, pack = False, _offset = 0, _S = None, noclose = False): " Returns string representation of XML. No <?xml...> provided and encoding is always utf-8 " if not _S: S = StringIO() else: S = _S margin = ' ' * (_offset * align) if not pack: S.write(margin) S.write('<%s' % _utfstring(self.name)) for a in self.attrs: S.write(' %s="%s"' % (_utfstring(a), _utfstring(self._quoteattr(self.attrs[a])))) if len(self.nodes) == 0: if not noclose: S.write('/>') else: S.wirte('>') else: S.write('>') if not pack: S.write('\n') for node in self.nodes: if isinstance(node, basestring): # Characters: if not pack: S.write(margin) S.write(' ' * align) S.write(xml_escape(_utfstring(node).strip())) if not pack: S.write('\n') else: node.toString(align, pack, _offset + 1, S) if not noclose: if not pack: S.write(margin) S.write('</%s>' % _utfstring(self.name)) if not pack: S.write('\n') return S.getvalue()