diff options
| author | Vo Minh Thu <vmt@openerp.com> | 2012-01-18 11:12:52 +0100 |
|---|---|---|
| committer | Vo Minh Thu <vmt@openerp.com> | 2012-01-18 11:12:52 +0100 |
| commit | 75b3fc0907ee873c6e16d1fa8e8bfe58d4f520c1 (patch) | |
| tree | 3e7f7bbe9110eeae766b46bb9c16a867579b6452 /addons/web/common/xml2json.py | |
| parent | 3203d264aecd751a8c261cea4f72fa323a3098be (diff) | |
| parent | 152f92916bc36d00c0e59fbc49fb655a4fd85908 (diff) | |
[MERGE] merged trunk.
bzr revid: vmt@openerp.com-20120118101252-e81nlyzym2nkebf4
Diffstat (limited to 'addons/web/common/xml2json.py')
| -rw-r--r-- | addons/web/common/xml2json.py | 52 |
1 files changed, 20 insertions, 32 deletions
diff --git a/addons/web/common/xml2json.py b/addons/web/common/xml2json.py index 1f2e74691b9..df3aad67fa5 100644 --- a/addons/web/common/xml2json.py +++ b/addons/web/common/xml2json.py @@ -4,35 +4,23 @@ # # URL: http://code.google.com/p/xml2json-direct/ -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 |
