# set namespaces map
self.namespaces = dict(self.root.nsmap)
if 'default' not in self.namespaces and None in self.namespaces:
+ # If the 'None' exist, then it's pointing to the default namespace. This makes
+ # it hard for us to write xpath queries for the default naemspace because lxml
+ # wont understand a None prefix. We will just associate the default namespeace
+ # with a key named 'default'.
self.namespaces['default'] = self.namespaces[None]
- # If the 'None' exist, then it's pointing to the default namespace. This makes
- # it hard for us to write xpath queries for the default naemspace because lxml
- # wont understand a None prefix. We will just associate the default namespeace
- # with a key named 'default'.
- if None in self.namespaces:
- default_namespace = self.namespaces.pop(None)
- self.namespaces['default'] = default_namespace
+ else:
+ self.namespaces['default'] = 'default'
# set schema
for key in self.root.attrib.keys():
def parse_dict(self, d, root_tag_name='xml', element = None):
if element is None:
- self.parse_xml('<%s/>' % root_tag_name)
+ if self.root is None:
+ self.parse_xml('<%s/>' % root_tag_name)
element = self.root
if 'text' in d:
for val in value:
if isinstance(val, dict):
child_element = etree.SubElement(element, key)
- self.parse_dict(val, key, child_element)
-
+ self.parse_dict(val, key, child_element)
+ elif isinstance(val, basestring):
+ child_element = etree.SubElement(element, key).text = val
+
+ elif isinstance(value, int):
+ d[key] = unicode(d[key])
+ elif value is None:
+ d.pop(key)
+
element.attrib.update(d)
def validate(self, schema):