#!/usr/bin/python
+from types import StringTypes
from lxml import etree
from StringIO import StringIO
# 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]
+ self.namespaces['default'] = self.namespaces.pop(None)
+
else:
self.namespaces['default'] = 'default'
-
# set schema
for key in self.root.attrib.keys():
if key.endswith('schemaLocation'):
# element.attrib.update will explode if DateTimes are in the
# dcitionary.
d=d.copy()
+ # looks like iteritems won't stand side-effects
for k in d.keys():
- if (type(d[k]) != str) and (type(d[k]) != unicode):
+ if not isinstance(d[k],StringTypes):
del d[k]
element.attrib.update(d)
def add_element(self, name, attrs={}, parent=None, text=""):
"""
- Generic wrapper around etree.SubElement(). Adds an element to
+ Wrapper around etree.SubElement(). Adds an element to
specified parent node. Adds element to root node is parent is
not specified.
"""
for child in elem.iterchildren():
if child.tag not in d:
d[child.tag] = []
- d[child.tag].append(self.todict2(child))
+ d[child.tag].append(self.todict(child))
if len(d)==1 and ("text" in d):
d = d["text"]