[IMP] Xml2JSON: remove useless class indirection and unused methods

bzr revid: xmo@openerp.com-20120117094748-g9470elsdpx78im8
This commit is contained in:
Xavier Morel 2012-01-17 10:47:48 +01:00
parent e4697c48a1
commit e99358e2fa
2 changed files with 21 additions and 35 deletions

View File

@ -3,38 +3,24 @@
# New BSD Licensed
#
# URL: http://code.google.com/p/xml2json-direct/
import simplejson
from xml.etree import ElementTree
class Xml2Json(object):
@staticmethod
def convert_to_json(s):
return simplejson.dumps(
Xml2Json.convert_to_structure(s), sort_keys=True, indent=4)
@staticmethod
def convert_to_structure(s):
root = ElementTree.fromstring(s)
return Xml2Json.convert_element(root)
@staticmethod
def convert_element(el, preserve_whitespaces=False):
res = {}
if el.tag[0] == "{":
ns, name = el.tag.rsplit("}", 1)
res["tag"] = name
res["namespace"] = ns[1:]
else:
res["tag"] = el.tag
res["attrs"] = {}
for k, v in el.items():
res["attrs"][k] = v
kids = []
if el.text and (preserve_whitespaces or el.text.strip() != ''):
kids.append(el.text)
for kid in el:
kids.append(Xml2Json.convert_element(kid, preserve_whitespaces))
if kid.tail and (preserve_whitespaces or kid.tail.strip() != ''):
kids.append(kid.tail)
res["children"] = kids
return res
def from_elementtree(el, preserve_whitespaces=False):
res = {}
if el.tag[0] == "{":
ns, name = el.tag.rsplit("}", 1)
res["tag"] = name
res["namespace"] = ns[1:]
else:
res["tag"] = el.tag
res["attrs"] = {}
for k, v in el.items():
res["attrs"][k] = v
kids = []
if el.text and (preserve_whitespaces or el.text.strip() != ''):
kids.append(el.text)
for kid in el:
kids.append(from_elementtree(kid, preserve_whitespaces))
if kid.tail and (preserve_whitespaces or kid.tail.strip() != ''):
kids.append(kid.tail)
res["children"] = kids
return res

View File

@ -933,7 +933,7 @@ class View(openerpweb.Controller):
xml = self.transform_view(arch, session, evaluation_context)
else:
xml = ElementTree.fromstring(arch)
fvg['arch'] = web.common.xml2json.Xml2Json.convert_element(xml, preserve_whitespaces)
fvg['arch'] = web.common.xml2json.from_elementtree(xml, preserve_whitespaces)
for field in fvg['fields'].itervalues():
if field.get('views'):