python的死简单对象xml映射器

dexml的Python项目详细描述


让我们面对现实:XML是现代生活的一个事实。我甚至会说 它是good在做什么。但这并不意味着工作很容易 但这并不意味着我们必须喜欢它。大多数时候,xml 只需要让开让你做些实际的工作 编写代码来遍历和操作另一个dom。

dexml模块采用xml标记和python对象之间的明显映射 让你尽可能清晰地捕捉到它。灵感来源于Django's 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>'

格式错误的文档将引发分析错误:

>>> 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名称空间、默认字段值、不区分大小写 解析,还有更多有趣的东西。查看以下文档 课程了解更多详细信息:

Model:the base class for objects that map into XML
Field:the base class for individual model fields
Meta:meta-information about how to parse/render a model

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

推荐PyPI第三方库


热门话题
java无法从另一个类访问主类   java无效AES密钥长度:39字节   上传文档并显示文档状态Selenium WebDriver Java   在基于java的web应用程序中实现单点登录的身份验证先决条件   java减缓颜色序列代码   nosuchmethoderror Java`NoSuchMethodException`但方法在代码中不存在反射   java如何在JList中只允许唯一的字符串?   数据库获取:尝试将文件移动到文件夹时:“java.nio.file.FileSystemException”   java我无法从广播接收器获得startService   java在活动启动一段时间后更改文本   java无法编译,缺少主方法   运行Spring项目时出现java空指针异常   java@ManyToMany关系不保存   是否有一种java等价于C#语言。聚合(foo)方法?   visual studio代码Java错误,Java中的重复变量错误,无法从字符串转换为类