From: allfro Date: Sat, 15 Dec 2012 04:17:07 +0000 (-0500) Subject: Update src/canari/xmltools/oxml.py X-Git-Url: https://git.nothing2do.fr/?a=commitdiff_plain;h=ba15f43ae6c18a606e6240e0f8017d700896a4cd;p=get-hack-src.git Update src/canari/xmltools/oxml.py Fixed CDATA xml serialization for Python version 2.7.  --- diff --git a/src/canari/xmltools/oxml.py b/src/canari/xmltools/oxml.py index 599072c..02addd6 100644 --- a/src/canari/xmltools/oxml.py +++ b/src/canari/xmltools/oxml.py @@ -4,7 +4,7 @@ import xml.etree.ElementTree as ET from numbers import Number from copy import deepcopy from pickle import dumps -from sys import stdout +from sys import stdout, version_info from re import sub __author__ = 'Nadeem Douba' @@ -305,18 +305,28 @@ class XMLSubElement(object): class ElementTree(ET.ElementTree): - """ElementTree with CDATA support.""" - def _write(self, file, node, encoding, namespaces): - if node.tag == 'CDATA': - if node.text is not None: - text = node.text.encode(encoding) - file.write('' % text) - else: - _eto._write(self, file, node, encoding, namespaces) + if (2, 6) <= version_info < (2, 7): + def _write(self, file, node, encoding, namespaces): + if node.tag is 'CDATA': + if node.text is not None: + text = node.text.encode(encoding) + file.write('' % text) + else: + _eto._write(self, file, node, encoding, namespaces) def write(self, file=stdout, encoding='us-ascii'): _eto.write(self, file, encoding) +if version_info >= (2, 7): + _orig_serialize_xml = ET._serialize_xml + + def _serialize_xml(write, elem, encoding, qnames, namespaces): + if elem.tag == 'CDATA': + elem.tag = None + _orig_serialize_xml(write, elem, encoding, qnames, namespaces) + + ET._serialize_xml = _serialize_xml + class Element(ET._ElementInterface, object):