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