Skip to main content
Travis CI Codecov Code Climate Code issues Codacy Documentation Status

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)

Source distribution for mappet 0.1.2
File Size Uploaded
mappet-0.1.2.tar.gz 10.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mappet 0.1.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page