Example #1
0
	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()