跳转到主要内容

一个简单的Python对象-XML映射器

项目描述

让我们面对现实:xml是现代生活的一个事实。我甚至可以说它擅长它所做的事情。但这并不意味着它容易使用,也不意味着我们必须喜欢它。大多数时候,XML只需要让路,让你做一些实际的工作,而不是编写代码来遍历和操作另一个DOM。

dexml模块接受XML标签和Python对象之间的明显映射,并让您尽可能清晰地捕获它。受Django的ORM的启发,您编写简单的类定义来定义XML文档的预期结构。就像这样

>>> import dexml
>>> from dexml import fields
>>> class Person(dexml.Model):
...   name = fields.String()
...   age = fields.Integer(tagname='age')

然后您可以解析XML文档到像这样的对象

>>> p = Person.parse("<Person name='Foo McBar'><age>42</age></Person>")
>>> p.name
u'Foo McBar'
>>> p.age
42

然后您可以渲染对象到像这样的XML文档

>>> p = Person(name="Handsome B. Wonderful",age=36)
>>> p.render()
'<?xml version="1.0" ?><Person name="Handsome B. Wonderful"><age>36</age></Person>'

格式错误的文档将引发ParseError

>>> p = Person.parse("<Person><age>92</age></Person>")
Traceback (most recent call last):
    ...
ParseError: required field not found: 'name'

当然,当嵌套模型定义时,会更有趣,就像这样

>>> class Group(dexml.Model):
...   name = fields.String(attrname="name")
...   members = fields.List(Person)
...
>>> g = Group(name="Monty Python")
>>> g.members.append(Person(name="John Cleese",age=69))
>>> g.members.append(Person(name="Terry Jones",age=67))
>>> g.render(fragment=True)
'<Group name="Monty Python"><Person name="John Cleese"><age>69</age></Person><Person name="Terry Jones"><age>67</age></Person></Group>'

支持XML命名空间、默认字段值、不区分大小写的解析和更多有趣的功能。有关以下类更详细的信息,请参阅文档

模型:

映射到XML的对象的基类

字段:

单个模型字段的基类

元数据:

有关如何解析/渲染模型的元信息

项目详情


下载文件

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

源分发

dexml-0.5.1.tar.gz (24.4 kB 查看哈希值)

上传时间

支持者

AWSAWS云计算和安全赞助商DatadogDatadog监控FastlyFastlyCDNGoogleGoogle下载分析MicrosoftMicrosoftPSF赞助商PingdomPingdom监控SentrySentry错误记录StatusPageStatusPage状态页面