All pastes #420650 Raw Edit

jflash

public text v1 · immutable
·published 2007-04-02 09:38 UTC
rendered paste body
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" ] ] )