一个简单的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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6ba83883ead5cc74ce8198daecc657b60bf9cdb3887b484a92dcde55c10e2cdf |
|
MD5 | 7f7bbb66cdceb38adbc9092a9a159d87 |
|
BLAKE2b-256 | f19d47531577926234bdea59345e6acc326cc008730cbf0c6a4b5703bbee4ca1 |