# HG changeset patch # User paulb # Date 1068855325 0 # Node ID 53d341a824e2e16ef8584e033eda15369d4dee52 # Parent c1ea85c65c0611d087d555421df1fdf35c1c00e6 [project @ 2003-11-15 00:15:25 by paulb] Fixed storage/set operations to convert Unicode objects into the strings that the Python wrappers obviously require. diff -r c1ea85c65c06 -r 53d341a824e2 __init__.py --- a/__init__.py Mon Nov 10 23:52:54 2003 +0000 +++ b/__init__.py Sat Nov 15 00:15:25 2003 +0000 @@ -10,10 +10,14 @@ # NOTE: libxml2 seems to use UTF-8 throughout. +def from_unicode(s): + if type(s) == type(u""): + return s.encode("utf-8") + else: + return s + def to_unicode(s): - if s is None: - return None - elif type(s) == type(""): + if type(s) == type(""): return unicode(s, encoding="utf-8") else: return s @@ -205,6 +209,9 @@ return self.attributes[(None, localName)] def setAttributeNS(self, ns, name, value): + # NOTE: Need to convert from Unicode. + ns, name, value = map(from_unicode, [ns, name, value]) + prefix, localName = _get_prefix_and_localName(name) if prefix is not None: self._node.setNsProp(self._node.newNs(ns, prefix), localName, value) @@ -215,6 +222,9 @@ self._node.setNsProp(None, localName, value) def setAttribute(self, name, value): + # NOTE: Need to convert from Unicode. + name, value = map(from_unicode, [name, value]) + self._node.setProp(name, value) def setAttributeNodeNS(self, ns, name, node): @@ -226,6 +236,9 @@ self.setAttribute(name, node.nodeValue) def createElementNS(self, ns, name): + # NOTE: Need to convert from Unicode. + ns, name = map(from_unicode, [ns, name]) + prefix, localName = _get_prefix_and_localName(name) _node = libxml2.newNode(localName) _ns = _node.newNs(ns, prefix) @@ -233,17 +246,29 @@ return Node(_node) def createElement(self, name): + # NOTE: Need to convert from Unicode. + name = from_unicode(name) + _node = libxml2.newNode(localName) return Node(_node) def createAttributeNS(self, ns, name): + # NOTE: Need to convert from Unicode. + ns, name = map(from_unicode, [ns, name]) + prefix, localName = _get_prefix_and_localName(name) return TemporaryNode(ns, name, xml.dom.Node.ATTRIBUTE_NODE) def createAttribute(self, name): + # NOTE: Need to convert from Unicode. + name = from_unicode(name) + return TemporaryNode(ns, name, xml.dom.Node.ATTRIBUTE_NODE) def createTextNode(self, value): + # NOTE: Need to convert from Unicode. + name = from_unicode(name) + return Node(libxml2.newText(value)) def _add_node(self, tmp):