X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sfa%2Futil%2Fxml.py;h=91a1d9509c1e9311213b183e7b1b878169fb9946;hb=fb4f1bb254add972a048ca57743ccae2135fc96b;hp=2618ca1eb58666de31ea9e1e5ffa615a24e037df;hpb=d5bd77c4c61c49589616cbe9c854b5cba19b5193;p=sfa.git 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