- service_elem = etree.SubElement(xml, 'service')
- Element.add(service_elem, 'install', service.get('install', []), Install.fields)
- Element.add(service_elem, 'execute', service.get('execute', []), Execute.fields)
- Element.add(service_elem, 'login', service.get('login', []), Login.fields)
+ service_elem = xml.add_element('services')
+ child_elements = {'install': Install.fields,
+ 'execute': Execute.fields,
+ 'login': Login.fields}
+ for (name, fields) in child_elements.items():
+ child = service.get(name)
+ if not child:
+ continue
+ if isinstance(child, dict):
+ service_elem.add_instance(name, child, fields)
+ elif isinstance(child, list):
+ for obj in child:
+ service_elem.add_instance(name, obj, fields)