rendered paste bodyfrom xml.etree.ElementTree import Element, tostring
""" two methods for converting simple data into a very lightweight xml message """
def simpleEncode( ob, met, args=[]):
# TODO: assert valid params
root = Element("s" , c="%s.%s" % (ob, met) )
if len(args) > 0:
root.set( "p" , "*".join( str(arg) for arg in args) )
return tostring( root )
def encode( ob, met, args=[]):
# TODO: assert valid params
root = Element("s" , c="%s.%s" % (ob, met) )
if len(args) > 0:
for arg in args:
if isinstance(arg, list):
__createTreeNode( root , arg )
elif isinstance(arg, int):
sub = Element( "p" , t="n" )
sub.text = str( arg )
root.append( sub )
else:
sub = Element( "p" )
sub.text = arg
root.append( sub )
return tostring( root )
def __createTreeNode( el, items=[] ):
parent = Element( "p" , t="a" )
for item in items:
if isinstance(item, int):
sub = Element( "p" , t="n" )
sub.text = str( item )
parent.append( sub )
else:
sub = Element( "p" )
sub.text = item
parent.append( sub )
el.append( parent )
if __name__ == "__main__":
#print simpleEncode( "foo" , "bar" )
#print simpleEncode( "foo" , "bar" , [ "hello world" , 123 ] )
print encode( "foo" , "bar" , [ "hello" , 123 , ["a","b","c" ] ] )