From fb4f1bb254add972a048ca57743ccae2135fc96b Mon Sep 17 00:00:00 2001 From: Tony Mack Date: Fri, 21 Oct 2011 15:26:23 -0400 Subject: [PATCH] parse_dict() can now handle repeating fields --- sfa/util/xml.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) 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 -- 2.43.0