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)