[compat] compat_etree_fromstring: also decode the text attribute

Deletes parse_xml from utils, because it also does it.
This commit is contained in:
Jaime Marquínez Ferrándiz 2015-10-26 16:41:24 +01:00
parent 387db16a78
commit f78546272c
5 changed files with 30 additions and 30 deletions

View file

@ -216,9 +216,19 @@ except ImportError: # Python 2.6
if sys.version_info[0] >= 3:
compat_etree_fromstring = xml.etree.ElementTree.fromstring
else:
# on python 2.x the the attributes of a node aren't always unicode objects
# on python 2.x the attributes and text of a node aren't always unicode
# objects
etree = xml.etree.ElementTree
try:
_etree_iter = etree.Element.iter
except AttributeError: # Python <=2.6
def _etree_iter(root):
for el in root.findall('*'):
yield el
for sub in _etree_iter(el):
yield sub
# on 2.6 XML doesn't have a parser argument, function copied from CPython
# 2.7 source
def _XML(text, parser=None):
@ -235,7 +245,11 @@ else:
return el
def compat_etree_fromstring(text):
return _XML(text, parser=etree.XMLParser(target=etree.TreeBuilder(element_factory=_element_factory)))
doc = _XML(text, parser=etree.XMLParser(target=etree.TreeBuilder(element_factory=_element_factory)))
for el in _etree_iter(doc):
if el.text is not None and isinstance(el.text, bytes):
el.text = el.text.decode('utf-8')
return doc
try:
from urllib.parse import parse_qs as compat_parse_qs