像处理python对象一样处理xml文档

mappet的Python项目详细描述


Travis CICodecovCode ClimateCode issuesCodacyDocumentation Status

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()有两个参数,defaultcallback。当then节点的值为空时,返回第一个 第二个是对返回值调用的函数。

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

或者,可以使用helpers.py中定义的内置帮助器函数

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

帮助函数

  • 对布尔
  • 输入
  • 至街道
  • 到字符串
  • 要浮动
  • 到时间
  • 到日期时间
  • 结束日期

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带有服务类安卓的java altbeacon   java在OpenXava免费版本中可以创建多个用户吗?   java如何决定定义变量“private”?   java为什么GetMethodID()对不存在的方法不返回NULL?   java Get JComboBox项字符串表示法   java如何在ifs之间设置限制?   java Android错误:IllegalStateException   JavaSpring4MVC语言环境已更改,但JSP对此没有响应   java Netbeans:如何构建。jar文件随附外部文件。jar库?   Spring Petclinic项目Maven编译时出现java错误   声明Java数组增量元素的快速方法   java无法使用相对xpath找到元素   javascript无法更改标题,也无法在操作栏上显示图标   java标签不是一个接一个地动态创建的   java如何使用ThymeLeaf将对象的属性绑定到隐藏字段?   java从EJB无状态会话bean调用CDI会话范围的生产者方法   java为什么num+=array[i]与for循环中的num=num+array[i]的工作方式不同   使用jsonsimple实现jQuery UI自动完成的java JSON格式   JavaFaceletsUI:重复标记中断JSF表单验证