listmodel是一个python库,用于以统一方式为各种列表源(xml文档、csv文档、文本文档、json/yaml对象)进行对象映射。
listmodel的Python项目详细描述
listmodel是一个python库,用于以统一方式为各种列表源(xml文档、csv文档、文本文档、json/yaml对象)进行对象映射。灵感来自QMLXmlListModel。
基本用法
>>>fromlistmodelimportXMLDoc,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> ... """>>>classBookshelf(XMLDoc):...classIterable(XMLDoc):...__query__="/bookshelf/book"......@set_name("Chapter")...classIterable(XMLDoc):...__query__="chapter"...id=QueryAttr("@id")......isbn=QueryAttr("isbn/text()")...title=QueryAttr("title/text()")...author=QueryAttr("author/text()")......@QueryAttr("author/text()")...defauthor_first_name(self,value):...returnvalue.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')>]