diff options
Diffstat (limited to 'suds/sax')
-rw-r--r-- | suds/sax/document.py | 24 | ||||
-rw-r--r-- | suds/sax/element.py | 23 |
2 files changed, 40 insertions, 7 deletions
diff --git a/suds/sax/document.py b/suds/sax/document.py index c7129cb..5a004eb 100644 --- a/suds/sax/document.py +++ b/suds/sax/document.py @@ -27,6 +27,8 @@ log = getLogger(__name__) class Document(Element): """ simple document """ + + DECL = '<?xml version="1.0" encoding="UTF-8"?>' def __init__(self, root=None): Element.__init__(self, 'document') @@ -34,18 +36,26 @@ class Document(Element): self.append(root) def root(self): - if len(self.children) > 0: + if len(self.children): return self.children[0] else: return None + def str(self): + s = [] + s.append(self.DECL) + s.append('\n') + s.append(self.root().str()) + return ''.join(s) + + def plain(self): + s = [] + s.append(self.DECL) + s.append(self.root().plain()) + return ''.join(s) + def __str__(self): return unicode(self).encode('utf-8') def __unicode__(self): - result = '<?xml version="1.0" encoding="UTF-8"?>' - root = self.root() - if root is not None: - result += '\n' - result += root.str() - return unicode(result) + return self.str()
\ No newline at end of file diff --git a/suds/sax/element.py b/suds/sax/element.py index 0a015f1..9dec1f9 100644 --- a/suds/sax/element.py +++ b/suds/sax/element.py @@ -767,6 +767,29 @@ class Element: result.append('</%s>' % self.qname()) result = ''.join(result) return result + + def plain(self): + """ + Get a string representation of this XML fragment. + @return: A I{plain} string. + @rtype: basestring + """ + result = [] + result.append('<%s' % self.qname()) + result.append(self.nsdeclarations()) + for a in [unicode(a) for a in self.attributes]: + result.append(' %s' % a) + if self.isempty(): + result.append('/>') + return ''.join(result) + result.append('>') + if self.hasText(): + result.append(self.text.escape()) + for c in self.children: + result.append(c.plain()) + result.append('</%s>' % self.qname()) + result = ''.join(result) + return result def nsdeclarations(self): """ |