1

我使用 Spyne 框架来提供 SOAP Web 服务。我需要返回一些非常相似的东西

<MyReturnObject>                             
 <MyList>
   <MyElement Name="Value1">value2</MyElement>
   <MyElement Name="Value2">value3</MyElement>
 </MyList>
</MyReturnObject>   

我尝试了以下

class MyElement(ComplexModel):
    Name = XMLAttribute(String)
class MyReturnObject(ComplexModel):
    MyList = Array(MyElement)

但这会导致

<MyReturnObject>                             
 <MyList>
   <MyElement Name="Value1"/>
   <MyElement Name="Value2"/>
 </MyList>
</MyReturnObject>  

有没有办法为给定的属性指定一个文本值?我真的很感谢你的帮助:)

4

1 回答 1

0

这应该有效:

class MyElement(ComplexModel):
    Name = XmlAttribute(String)
    Data = XmlData(Unicode)

class MyReturnObject(ComplexModel):
    MyList = Array(MyElement)

用法:

from lxml import etree
from spyne.util.xml import get_object_as_xml

obj = MyReturnObject(MyList=[
    MyElement('value2', Name='Value1'),
    MyElement('value3', Name='Value2'),
])

elt = get_object_as_xml(obj, MyReturnObject)
print(etree.tostring(elt, pretty_print=True))

印刷:

<MyReturnObject>
  <MyList>
    <MyElement Name="Value1">value2</MyElement>
    <MyElement Name="Value2">value3</MyElement>
  </MyList>
</MyReturnObject>
于 2014-06-19T10:06:17.120 回答