xon is a Python implementation of something I've come to call "XML
Object Notation", or XON. It generally conforms to the pickle protocol, which
means you interact with it using load and dump functions.
XON arose out of a need to support XML in web-based APIs that already support JSON, and supports the same vocabulary that JSON does. It is based on--and, in fact, the test cases come from--Stefan Goessner's "Converting Between XML and JSON". If you don't use any of xon's extra options, it is intended to work exactly like Goessner describes therein:
>>> import xon
>>> xon.dumps({'foo': {'bar': ['baz', 'quux']}})
'<foo><bar>baz</bar><bar>quux</bar></foo>'
>>> xon.loads('<foo><bar>baz</bar><bar>quux</bar></foo>')
{'foo': {'bar': ['baz', 'quux']}}
Additional options include convertvalues, which will convert
ints, floats, and bools in addition to the default
behavior of handling strings only, and wrap/unwrap, which
deals with the root tag so that the load result and dump
parameters are more like typical JSON objects.