xmljson
xmlsjon converts XML into Python dictionary structures (trees, like in JSON) and vice-versa.
About
XML can be converted to a data structure (such as JSON) and back. For example:
<employees>
<person>
<name value="Alice"/>
</person>
<person>
<name value="Bob"/>
</person>
</employees>
can be converted into this data structure (which also a valid JSON object):
{ "employees": [
{ "person": {
"name": {"@value": "Alice"}
} },
{ "person": {
"name": {"@value": "Alice"}
} }
] }
This uses the BadgerFish convention that prefixes attributes with @. Other conventions supported by this library are:
BadgerFish: Use "$" for text content, @ to prefix attributes,
GData: Use "$" for text content, ignore attributes
Parker: Ignore attributes and text content
Usage
To convert from a data structure to XML using the BadgerFish convention:
>>> from xmljson import badgerfish as bf
>>> bf.etree({'p': {'@id': 'main', '$': 'Hello', 'b': {'$': 'bold'}}})
This returns an array of etree.Element structures. In this case, the result is identical to:
>>> from xml.etree.ElementTree import fromstring
>>> [fromstring('<p id="main">Hello<b>bold</b></p>')]
The result can be inserted into any existing root etree.Element:
>>> from xml.etree.ElementTree import Element, tostring
>>> root = Element('root')
>>> result = bf.etree({'p': {'@id': 'main'}}, root=root)
>>> tostring(result)
<root><p id="main"/></root>
To convert from XML to a data structure using the BadgerFish convention:
>>> bf.data(fromstring('<p id="main">Hello<b>bold</b></p>'))
{"p": {"$": "Hello", "@id": "main", "b": {"$": "bold"}}}
To convert this to JSON, use:
>>> from json import dumps
>>> dumps(bf.data(fromstring('<p id="main">Hello<b>bold</b></p>')))
'{"p": {"b": {"$": "bold"}, "@id": "main", "$": "Hello"}}'
To preserve the order of attributes and children, specify the dict_type as OrderedDict (or any other dictionary-like type) in the constructor:
>>> from collections import OrderedDict >>> from xmljson import BadgerFish # import the class >>> bf = BadgerFish(dict_type=OrderedDict) # pick dict class
To use a different conversion method, replace BadgerFish with one of the other classes. Currently, these are supported:
>>> from xmljson import badgerfish # == xmljson.BadgerFish() >>> from xmljson import gdata # == xmljson.GData() >>> from xmljson import parker # == xmljson.Parker()
Installation
This is a pure-Python package built for Python 2.6+ and Python 3.0+. To set up:
pip install xmljson
Roadmap
Test cases for most HTML and XML scenarious across conventions
Test cases for Unicode
Support for namespaces and namespace prefixes
History
0.1.0 (2015-09-15)
Two-way conversions via BadgerFish, GData and Parker conventions.
First release on PyPI.
Metadata
Release files for xmljson 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xmljson-0.1.1.zip | 23.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xmljson-0.1.1-py2.py3-none-any.whl | Python 2, Python 3 | none | any | Details |
Total release size: 30.0 kB
Release files / xmljson-0.1.1.zip
| Download URL | xmljson-0.1.1.zip |
|---|---|
| Size | 23.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f57de77c11408c398ce1ee612ab7e87ad97751729530c0273f25dceff944cc8a
|
|
BLAKE2b-256 checksum How to use checksums |
e1492e24539c12712d5a26b68e37530d1cde35e5bd4052d3d1507dcc8660471d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / xmljson-0.1.1-py2.py3-none-any.whl
| Download URL | xmljson-0.1.1-py2.py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 2 Python 3 |
|
SHA-256 checksum How to use checksums |
7a5c691887619b152687a72ecaca000ffcf783d3a5cc31183d956e4f221c41ab
|
|
BLAKE2b-256 checksum How to use checksums |
0efd33acdd3a88b7803a954a43260b682f75c979b5122f885483d9553105d821
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |