mappet
Mappet has been created to enable an easy an intuitive way to work with XML structures in Python code.
A well known lxml module has been used under the hood, mainly due to XML parsing performance.
Mappet accepts a string with valid XML, an lxml.etree._Element object or a dict representing the XML tree.
>>> import mappet
>>> f = open('example.xml', 'r')
>>> m = mappet.Mappet(f.read())
As an example, an XML document of the following structure has been used:
<?xml version='1.0' encoding='iso-8859-2'?>
<a-message>
<head>
<id seq="20" tstamp="2015-07-13T10:55:25+02:00"/>
<initiator>Mr Sender</initiator>
<date>2015-07-13T10:56:05.597420+02:00</date>
<type>reply-type</type>
</head>
<auth>
<user first-name="Name" last-name="LastName">id</user>
</auth>
<status>
<result>OK</result>
</status>
<reply>
<cars>
<Car>
<id>12345</id>
<Manufacturer>BMW</Manufacturer>
<Model_Name>X6</Model_Name>
<Body>SUV</Body>
<Fuel>Diesel</Fuel>
<Doors>5</Doors>
<ccm>3000</ccm>
<HP>256</HP>
<TransType>Automatic</TransType>
<seats>5</seats>
<weight>3690</weight>
</Car>
<Car>
<id>54321</id>
<Manufacturer>BMW</Manufacturer>
<Model_Name>X1</Model_Name>
<Body>SUV</Body>
<Fuel>Diesel</Fuel>
<Doors>5</Doors>
<ccm>3000</ccm>
<HP>198</HP>
<TransType>Automatic</TransType>
<seats>5</seats>
<weight>2890</weight>
</Car>
</cars>
</reply>
</a-message>
Conventions
Every XML node can be accessed in two ways: by attribute and item access.
Dictionary access:
Dictionary access is possible thanks to XML document being represented as a Python dictionary. Conversion of values is done explicitly.
By default, values are returned as str.
>>> m['reply']['cars']['Car'][0]['Manufacturer'] 'BMW'
Nodes’ names are case-sensitive.
Attribute access:
Due to restrictions in Python variable names, tag names are normalized for attribute access. Tag names are normalized to lowercase and hyphens to underlines.
Same example using attribute access (__repr__ is responsible for representing the tag):
>>> m.reply.cars.car[0].manufacturer BMW
To get a string representation use get().
>>> m.reply.cars.car[0].manufacturer.get() 'BMW'
get() has two parameters, default and callback. The first one is returned when then node’s value is empty, the second is a function to be called upon the returned value.
>>> m.reply.cars.car[0].ccm.get(callback=int) 3000
Alternatively, one can use built-in helper functions, defined in helpers.py
>>> m.reply.cars.car[0].ccm.to_int() 3000
Helper functions
to_bool
to_int
to_str
to_string
to_float
to_time
to_datetime
to_date
Release files for mappet 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mappet-0.1.2.tar.gz | 10.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mappet-0.1.2-py2-none-any.whl | Python 2 | none | any | Details |
Total release size: 24.5 kB
Release files / mappet-0.1.2.tar.gz
| Download URL | mappet-0.1.2.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
40c6e394d6986e2a2ec24ad83296c100539886460c6b9110e3842b170198a743
|
|
BLAKE2b-256 checksum How to use checksums |
a2faa2b5a78703bb1b93cffebbc534092595b9da88f323bc4d94eaaf4fb7877c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
Release files / mappet-0.1.2-py2-none-any.whl
| Download URL | mappet-0.1.2-py2-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 2 |
|
SHA-256 checksum How to use checksums |
5547df1e4a7129f44d78ae65f73b2bec95dfc8b38abda6babc1034ecaec573ee
|
|
BLAKE2b-256 checksum How to use checksums |
5731a2640e90586af356c6063f2bac91fe11736e45fb7d4c9ff414ce6de9c7f4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |