Simplify xml_serialize, warn when unknown type used
This commit is contained in:
parent
ed82264806
commit
154b4ef844
@ -20,7 +20,6 @@ def xml_root(name):
|
|||||||
|
|
||||||
|
|
||||||
def xml_serialize(tree, key, value):
|
def xml_serialize(tree, key, value):
|
||||||
if key:
|
|
||||||
name = key[0].lower() + key[1:]
|
name = key[0].lower() + key[1:]
|
||||||
if isinstance(value, list):
|
if isinstance(value, list):
|
||||||
if name[-1] == 's':
|
if name[-1] == 's':
|
||||||
@ -29,19 +28,19 @@ def xml_serialize(tree, key, value):
|
|||||||
name = name + 'Set'
|
name = name + 'Set'
|
||||||
|
|
||||||
node = ElementTree.SubElement(tree, name)
|
node = ElementTree.SubElement(tree, name)
|
||||||
else:
|
|
||||||
node = tree
|
|
||||||
|
|
||||||
if isinstance(value, (str, int, float, six.text_type)):
|
if isinstance(value, (str, int, float, six.text_type)):
|
||||||
node.text = str(value)
|
node.text = str(value)
|
||||||
elif isinstance(value, bool):
|
|
||||||
node.text = str(value).lower()
|
|
||||||
elif isinstance(value, dict):
|
elif isinstance(value, dict):
|
||||||
for dictkey, dictvalue in six.iteritems(value):
|
for dictkey, dictvalue in six.iteritems(value):
|
||||||
xml_serialize(node, dictkey, dictvalue)
|
xml_serialize(node, dictkey, dictvalue)
|
||||||
elif isinstance(value, list):
|
elif isinstance(value, list):
|
||||||
for item in value:
|
for item in value:
|
||||||
xml_serialize(node, 'item', item)
|
xml_serialize(node, 'item', item)
|
||||||
|
elif value == None:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
raise NotImplementedError("Don't know how to serialize \"{}\" to xml".format(value.__class__))
|
||||||
|
|
||||||
|
|
||||||
def pretty_xml(tree):
|
def pretty_xml(tree):
|
||||||
|
Loading…
Reference in New Issue
Block a user