From: Tony Mack Date: Fri, 21 Oct 2011 19:26:23 +0000 (-0400) Subject: parse_dict() can now handle repeating fields X-Git-Tag: sfa-1.1-1~65 X-Git-Url: http://git.onelab.eu/?p=sfa.git;a=commitdiff_plain;h=fb4f1bb254add972a048ca57743ccae2135fc96b parse_dict() can now handle repeating fields --- diff --git a/sfa/util/xml.py b/sfa/util/xml.py index 2618ca1e..91a1d950 100755 --- a/sfa/util/xml.py +++ b/sfa/util/xml.py @@ -73,6 +73,26 @@ class XML: namespace, schema = schema_parts[0], schema_parts[1] break + def parse_dict(self, d, root_tag_name='xml', element = None): + if element is None: + self.parse_xml('<%s/>' % root_tag_name) + element = self.root + + if 'text' in d: + text = d.pop('text') + element.text = text + + # handle repeating fields + for (key, value) in d.items(): + if isinstance(value, list): + value = d.pop(key) + for val in value: + if isinstance(val, dict): + child_element = etree.SubElement(element, key) + self.parse_dict(val, key, child_element) + + element.attrib.update(d) + def validate(self, schema): """ Validate against rng schema