跳转到主要内容

将XML文档作为Python对象一样工作

项目描述

Travis CI Codecov Code Climate Code issues Codacy Documentation Status

mappet

Mappet已被创建,以便能够以简单直观的方式在Python代码中处理XML结构。

底层使用了一个众所周知的lxml模块,主要是因为XML解析性能。

Mappet接受一个包含有效XML的字符串,一个lxml.etree._Element对象或一个表示XML树的字典。

>>> import mappet
>>> f = open('example.xml', 'r')
>>> m = mappet.Mappet(f.read())

例如,使用了以下结构的XML文档:

<?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>

约定

每个XML节点可以通过两种方式访问:通过属性和项目访问。

字典访问

由于Python变量名称的限制,标签名称已规范化以进行属性访问。标签名称被规范化为小写,连字符被下划线替换。

默认情况下,值以str的形式返回。

>>> m['reply']['cars']['Car'][0]['Manufacturer']
'BMW'

节点名称区分大小写。

属性访问

由于Python变量名称的限制,标签名称已规范化以进行属性访问。标签名称被规范化为小写,连字符被下划线替换。

使用属性访问的相同示例(__repr__ 负责表示标签)

>>> m.reply.cars.car[0].manufacturer
BMW

要获取字符串表示,请使用 get()

>>> m.reply.cars.car[0].manufacturer.get()
'BMW'

get() 有两个参数,默认值回调函数。第一个在节点值空时返回,第二个是返回值时要调用的函数。

>>> m.reply.cars.car[0].ccm.get(callback=int)
3000

或者,可以使用在 helpers.py 中定义的内建辅助函数

>>> m.reply.cars.car[0].ccm.to_int()
3000

辅助函数

  • to_bool

  • to_int

  • to_str

  • to_string

  • to_float

  • to_time

  • to_datetime

  • to_date

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分布

mappet-0.1.2.tar.gz (10.7 kB 查看哈希值)

上传时间 源代码

构建分布

mappet-0.1.2-py2-none-any.whl (13.7 kB 查看哈希值)

上传时间 Python 2

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面