diff options
Diffstat (limited to 'giscanner/xmlwriter.py')
-rwxr-xr-x | giscanner/xmlwriter.py | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/giscanner/xmlwriter.py b/giscanner/xmlwriter.py index 0c734a33..851c4c07 100755 --- a/giscanner/xmlwriter.py +++ b/giscanner/xmlwriter.py @@ -22,6 +22,7 @@ from __future__ import with_statement from __future__ import absolute_import from __future__ import division from __future__ import print_function +from __future__ import unicode_literals import os @@ -43,13 +44,13 @@ def build_xml_tag(tag_name, attributes=None, data=None, self_indent=0, self_indent_char=' '): if attributes is None: attributes = [] - prefix = u'<%s' % (tag_name, ) + prefix = '<%s' % (tag_name, ) if data is not None: - if isinstance(data, str): + if isinstance(data, bytes): data = data.decode('UTF-8') - suffix = u'>%s</%s>' % (escape(data), tag_name) + suffix = '>%s</%s>' % (escape(data), tag_name) else: - suffix = u'/>' + suffix = '/>' attrs = collect_attributes( tag_name, attributes, self_indent, @@ -62,7 +63,7 @@ class XMLWriter(object): def __init__(self): self._data = StringIO() - self._data.write('<?xml version="1.0"?>\n') + self._data.write(b'<?xml version="1.0"?>\n') self._tag_stack = [] self._indent = 0 self._indent_unit = 2 @@ -75,10 +76,10 @@ class XMLWriter(object): attributes = [] attrs = collect_attributes(tag_name, attributes, self._indent, self._indent_char, len(tag_name) + 2) - self.write_line(u'<%s%s>' % (tag_name, attrs)) + self.write_line('<%s%s>' % (tag_name, attrs)) def _close_tag(self, tag_name): - self.write_line(u'</%s>' % (tag_name, )) + self.write_line('</%s>' % (tag_name, )) # Public API @@ -93,18 +94,18 @@ class XMLWriter(object): def get_xml(self): return self._data.getvalue() - def write_line(self, line=u'', indent=True, do_escape=False): - if isinstance(line, str): + def write_line(self, line='', indent=True, do_escape=False): + if isinstance(line, bytes): line = line.decode('utf-8') assert isinstance(line, unicode) if do_escape: line = escape(line) if indent: - self._data.write('%s%s%s' % (self._indent_char * self._indent, - line.encode('utf-8'), - self._newline_char)) + self._data.write(('%s%s%s' % (self._indent_char * self._indent, + line, + self._newline_char)).encode('UTF-8')) else: - self._data.write('%s%s' % (line.encode('utf-8'), self._newline_char)) + self._data.write(('%s%s' % (line, self._newline_char)).encode('UTF-8')) def write_comment(self, text): self.write_line('<!-- %s -->' % (text, )) |