def serializeXML( data ):
def recursiveSerializer( data, element ):
if isinstance(data, dict):
element.setAttribute('ViurDataType', 'dict')
for key in data.keys():
childElement = recursiveSerializer(data[key], doc.createElement(key) )
element.appendChild( childElement )
elif isinstance(data, (tuple, list)):
element.setAttribute('ViurDataType', 'list')
for value in data:
childElement = recursiveSerializer(value, doc.createElement('entry') )
element.appendChild( childElement )
else:
if isinstance(data , bool):
element.setAttribute('ViurDataType', 'boolean')
elif isinstance( data, float ) or isinstance( data, int ):
element.setAttribute('ViurDataType', 'numeric')
elif isinstance( data, str ) or isinstance( data, unicode ):
element.setAttribute('ViurDataType', 'string')
elif isinstance( data, datetime ) or isinstance( data, date ) or isinstance( data, time ):
if isinstance( data, datetime ):
element.setAttribute('ViurDataType', 'datetime')
elif isinstance( data, date ):
element.setAttribute('ViurDataType', 'date')
else:
element.setAttribute('ViurDataType', 'time')
data = data.isoformat()
elif data is None:
element.setAttribute('ViurDataType', 'none')
data = ""
else:
raise NotImplementedError("Type %s is not supported!" % type(data))
element.appendChild( doc.createTextNode( unicode(data) ) )
return element
dom = minidom.getDOMImplementation()
doc = dom.createDocument(None, u"ViurResult", None)
elem = doc.childNodes[0]
return( recursiveSerializer( data, elem ).toprettyxml(encoding="UTF-8") )
评论列表
文章目录