Listmodel is a Python library for object mappings for various list sources (XML documents, CSV documents, text documents, JSON/YAML objects) in a unified manner.
Project description
Listmodel is a Python library for object mappings for various list sources (XML documents, CSV documents, text documents, JSON/YAML objects) in a unified manner. Inspiration was taken from QML XmlListModel.
Basic usage
>>> from listmodel import XMLDoc, QueryAttr, set_name
>>> xml = u"""<bookshelf>
... <name>My Bookshelf</name>
... <book>
... <title>1984</title>
... <author>Orwell, George</author>
... <isbn>978-0-452-28423-4</isbn>
... <chapter id="1">...</chapter>
... <chapter id="2">...</chapter>
... <chapter id="3">...</chapter>
... </book>
... <book>
... <title>The man in the high castle</title>
... <author>Dick, Philip K.</author>
... <isbn>0679740678</isbn>
... <chapter id="1">...</chapter>
... <chapter id="2">...</chapter>
... <chapter id="3">...</chapter>
... </book>
... </bookshelf>
... """
>>> class Bookshelf(XMLDoc):
... class Iterable(XMLDoc):
... __query__ = "/bookshelf/book"
...
... @set_name("Chapter")
... class Iterable(XMLDoc):
... __query__ = "chapter"
... id = QueryAttr("@id")
...
... isbn = QueryAttr("isbn/text()")
... title = QueryAttr("title/text()")
... author = QueryAttr("author/text()")
...
... @QueryAttr("author/text()")
... def author_first_name(self, value):
... return value.split(", ")[1]
...
... name = QueryAttr("/bookshelf/name/text()")
>>> shelf = Bookshelf.fromstring(xml)
>>> shelf
<Bookshelf (name='My Bookshelf')>
>>> shelf.name
'My Bookshelf'
>>> books = list(shelf)
>>> len(books)
2
>>> books[1].title
'The man in the high castle'
>>> books[1].author_first_name
'Philip K.'
>>> list(books[0])
[<Chapter (id='1')>, <Chapter (id='2')>, <Chapter (id='3')>]
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
listmodel-0.2.1.tar.gz
(3.5 kB
view hashes)