【问题标题】:Setting XML element text nodes in Spyne在 Spyne 中设置 XML 元素文本节点
【发布时间】:2014-02-25 13:46:04
【问题描述】:

我使用 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>  

有没有办法为给定的属性指定一个文本值? 非常感谢您的帮助:)

【问题讨论】:

  • 你的意思是给定的元素?您正在为属性设置文本值。

标签: python spyne


【解决方案1】:

这应该可行:

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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多