Tree [112303] eden / script.module.xmltodict /

HTTPS access

File Date Author Commit
 lib 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0
 tests 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0
 LICENSE.txt 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0
 addon.xml 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0
 changelog.txt 2012-10-08 amet amet [e81401] [script.module.xmltodict] -v 0.2.0

Read Me


xmltodict is a Python module that makes working with XML feel like you are working with JSON, as in this "spec":

Build Status

>>> doc = xmltodict.parse("""
... <mydocument has="an attribute">
...   <and>
...     <many>elements</many>
...     <many>more elements</many>
...   </and>
...   <plus a="complex">
...     element as well
...   </plus>
... </mydocument>
... """)
>>> doc['mydocument']['@has']
u'an attribute'
>>> doc['mydocument']['and']['many']
[u'elements', u'more elements']
>>> doc['mydocument']['plus']['@a']
>>> doc['mydocument']['plus']['#text']
u'element as well'

It's very fast (Expat-based) and has a streaming mode with a small memory footprint, suitable for big XML dumps like Discogs or Wikipedia:

>>> def handle_artist(_, artist):
...     print artist['name']
>>> xmltodict.parse(GzipFile('discogs_artists.xml.gz'),
...     item_depth=2, item_callback=handle_artist)
A Perfect Circle
King Crimson
Chris Potter

It can also be used from the command line to pipe objects to a script like this:

import sys, marshal
while True:
    _, article = marshal.load(sys.stdin)
    print article['title']
$ cat enwiki-pages-articles.xml.bz2 | bunzip2 | 2 |

Or just cache the dicts so you don't have to parse that big XML file again. You do this only once:

$ cat enwiki-pages-articles.xml.bz2 | bunzip2 | 2 | gzip > enwiki.dicts.gz

And you reuse the dicts with every script that needs them:

$ cat enwiki.dicts.gz | gunzip |
$ cat enwiki.dicts.gz | gunzip |

Ok, how do I get it?

You just need to

$ pip install xmltodict

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

No, thanks