一个defusedxml版本的python死的简单对象xml映射器

safedexml的Python项目详细描述


dexml: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(标记名“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=“英俊的b.wonderful”,age=36)
>;>;p.render()
'<;?XML版本=“1.0”?>;<;person name=“帅气的B.wonderful”>;<;年龄>;36<;/age>;<;/person>;'


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

>;>;p=person.parse(“<;person>;<;age>;92<;/age>;<;/person>;“
回溯(最近一次调用时间):

分析错误:未找到必需字段:“名称”

当然,嵌套模型定义时会更有趣,例如::

gt>类组(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:映射到xml的对象的基类
:field:单个模型字段的基类
:meta:有关如何解析/呈现模型的元信息

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

推荐PyPI第三方库


热门话题
java JMX MBean在应用程序部署时自动注册   java如何创建现有JavaFX对象的数组   IntelliJ的java单例线程安全吗   java将Base64编码字符串转换为PDF,无需使用Javascript中的任何库(IE兼容)   使用TestNG运行多个测试套件的java   java Firebase/Android:获取当前用户电子邮件   java如何捕获和传播通配符类型参数?   java如何在安卓中使用动画翻转图像   菜单和游戏活动之间的java延迟   java如何将对象转换为JSON(不包括属性)   java无法在可运行的JavaFX中更改接口   使用jsp/servlet的java清理URL?   java grpc示例是否打算跨语言使用?   java缺少目标JNDI名称   GridBagLayout中的java非均匀列   java如何在单独的线程中执行大量WS调用并增加单个结果变量?   以前使用数据导入数据时,java无法使用save()进行插入。sql   带有单独收集的java流过滤器