像处理python对象一样处理xml文档
mappet的Python项目详细描述
mappet
Mappet的创建是为了使用xml提供一种简单直观的方法 python代码中的结构。
一个众所周知的lxml模块已经在幕后使用,主要是由于xml解析性能。
mappet接受具有有效xml、对象lxml.etree._Element或dict的字符串 表示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><idseq="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><userfirst-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节点都可以通过两种方式进行访问:按属性访问和项访问。
词典访问:
由于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()有两个参数,default和callback。当then节点的值为空时,返回第一个 第二个是对返回值调用的函数。
>>> m.reply.cars.car[0].ccm.get(callback=int) 3000
或者,可以使用helpers.py中定义的内置帮助器函数
>>> m.reply.cars.car[0].ccm.to_int() 3000
帮助函数
- 对布尔
- 输入
- 至街道
- 到字符串
- 要浮动
- 到时间
- 到日期时间
- 结束日期