from 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" ] ] )