diff options
author | Lance Stout <lancestout@gmail.com> | 2011-08-03 18:35:01 -0700 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2011-08-03 18:35:01 -0700 |
commit | 9591cd3a7e94a663675d97b1db93c2c585d948dc (patch) | |
tree | b9e067447d7a269651b0b4e60fc7255b127aed79 /sleekxmpp/xmlstream/tostring/tostring.py | |
parent | db92fa23303f1115ef8bf938efb6d686d9c3fa0a (diff) | |
parent | afeb8a679a9895726eea5669b73c83d57bb03dff (diff) | |
download | slixmpp-9591cd3a7e94a663675d97b1db93c2c585d948dc.tar.gz slixmpp-9591cd3a7e94a663675d97b1db93c2c585d948dc.tar.bz2 slixmpp-9591cd3a7e94a663675d97b1db93c2c585d948dc.tar.xz slixmpp-9591cd3a7e94a663675d97b1db93c2c585d948dc.zip |
Merge branch 'stream_features' into develop
Diffstat (limited to 'sleekxmpp/xmlstream/tostring/tostring.py')
-rw-r--r-- | sleekxmpp/xmlstream/tostring/tostring.py | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/sleekxmpp/xmlstream/tostring/tostring.py b/sleekxmpp/xmlstream/tostring/tostring.py index 38b08d82..a6bb6ebc 100644 --- a/sleekxmpp/xmlstream/tostring/tostring.py +++ b/sleekxmpp/xmlstream/tostring/tostring.py @@ -7,7 +7,8 @@ """ -def tostring(xml=None, xmlns='', stanza_ns='', stream=None, outbuffer=''): +def tostring(xml=None, xmlns='', stanza_ns='', stream=None, + outbuffer='', top_level=False): """ Serialize an XML object to a Unicode string. @@ -26,6 +27,8 @@ def tostring(xml=None, xmlns='', stanza_ns='', stream=None, outbuffer=''): stream -- The XML stream that generated the XML object. outbuffer -- Optional buffer for storing serializations during recursive calls. + top_level -- Indicates that the element is the outermost + element. """ # Add previous results to the start of the output. output = [outbuffer] @@ -39,14 +42,21 @@ def tostring(xml=None, xmlns='', stanza_ns='', stream=None, outbuffer=''): else: tag_xmlns = '' + default_ns = '' + stream_ns = '' + if stream: + default_ns = stream.default_ns + stream_ns = stream.stream_ns + # Output the tag name and derived namespace of the element. namespace = '' - if tag_xmlns not in ['', xmlns, stanza_ns]: + if top_level and tag_xmlns not in ['', default_ns, stream_ns] or \ + tag_xmlns not in ['', xmlns, stanza_ns, stream_ns]: namespace = ' xmlns="%s"' % tag_xmlns - if stream and tag_xmlns in stream.namespace_map: - mapped_namespace = stream.namespace_map[tag_xmlns] - if mapped_namespace: - tag_name = "%s:%s" % (mapped_namespace, tag_name) + if stream and tag_xmlns in stream.namespace_map: + mapped_namespace = stream.namespace_map[tag_xmlns] + if mapped_namespace: + tag_name = "%s:%s" % (mapped_namespace, tag_name) output.append("<%s" % tag_name) output.append(namespace) |