通过decorator进行对象XML映射的Python框架?

通过decorator进行对象XML映射的Python框架?,python,xml,serialization,decorator,Python,Xml,Serialization,Decorator,在Java中XML序列化框架XML的易用性给我留下了深刻印象之后,我尝试寻找一种Python对应物,它将以类似的方式促进类及其XML序列化的实现。到目前为止,我或多或少是空手而归,尽管有一些有趣的候选人(但据我所知,没有一个能方便地使用);例如,我开始研究,但我遇到了一个简单的例子,比如实现一个类,允许对 <Error Code="0">OK</Error> Python中是否已经有一个类似于SimpleforJava的框架?我更喜欢Python 2.6支持,尽管这不是

在Java中XML序列化框架XML的易用性给我留下了深刻印象之后,我尝试寻找一种Python对应物,它将以类似的方式促进类及其XML序列化的实现。到目前为止,我或多或少是空手而归,尽管有一些有趣的候选人(但据我所知,没有一个能方便地使用);例如,我开始研究,但我遇到了一个简单的例子,比如实现一个类,允许对

<Error Code="0">OK</Error>

Python中是否已经有一个类似于SimpleforJava的框架?我更喜欢Python 2.6支持,尽管这不是强制性的;如果它只支持Python 3,我也会研究它。

没有答案,但会确认使用dexml解析示例的困难。看起来没有办法解析带有属性和文本节点的元素。定义代码属性很简单:

class Error(dexml.Model):
    code = dexml.fields.String(attrname="Code")
但无法引用子文本节点。人们想做一些类似的事情:

class Error(dexml.Model):
    code = dexml.fields.String(attrname="Code")
    text = dexml.fields.String(textnode=True)
捕获文本的一种不太令人满意的方法是将其包装在额外的标记中:

<Error Code="0"><text>OK</text></Error>

实际上,这种语法在dexml中是受支持的。我花了一段时间才弄明白(阅读源代码有帮助)

下面将返回desire的xml呈现:

e = Error(code="0",value="OK")
print e.render(fragment=True)
class Error(dexml.Model):
    code = dexml.fields.String(attrname="Code")
    text = dexml.fields.String(tagname="text")
class Error(dexml.Model):
    code = dexml.fields.String()
    value = dexml.fields.String(tagname=".")
e = Error(code="0",value="OK")
print e.render(fragment=True)