像处理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第三方库


热门话题
Google应用程序引擎FreeMarker模板java。安全AccessControlException   在Java中,空字符串(“”)如何存储在内存中?   java如何使用PUT进行创建   java无法构造com的实例。谷歌。云数据存储。钥匙   Java递归中的堆栈溢出错误   java通过结构化设计模式重构冗余代码   javascript使用Selenium IDE 2.9.1上传文件   JAVAutil。扫描仪在Java中将文本文件加载到对象中   这个JAVA程序的时间复杂度是多少   java Springboot+tomcat+ssh=连接链路故障   矢量Java不安全操作   用于Java不同生成代码的协议缓冲区gRPC protobuf生成器   java OSGi为什么我的包命名为“unknown0.0.0”和MANIFEST。MF文件被覆盖了吗?   java日期保持为空(Android)   使用stax解析器java解析xml   java有一种方法可以在运行时确定对象是否是使用Lambdaj创建的。关于()方法?