如何使用Spyne返回XML文件?

时间:2016-06-18 09:07:08

标签: python xml web-services return spyne

我有 Flask-Spyne 服务器(网络服务),我想返回(在他询问后返回客户端) XML文件

我想这样做:

  • 我会把一些东西从数据库放到XML上。 (的解决
  • 我将XML保存在服务器(webservice)上,我想在他询问时将其发送给客户端。 (这是一个问题

有办法怎么做?

这是我的代码:

class Service(spyne.Service):
    __service_url_path__ = '/soap';
    __in_protocol__ = Soap11(validator='lxml');
    __out_protocol__ = Soap11();

    @spyne.srpc(DateTime, DateTime, _returns="What to put here?")
    def Function(A,B):
        GetXML(A,B)
        s = open("file.xml");
        return s;

if __name__ == '__main__':
    app.run(host = '127.0.0.1');

非常感谢任何帮助.. :)

修改

所以,现在这是我的代码:(发送字符串)

@spyne.srpc(DateTime, DateTime, _returns=Iterable(Unicode))
    def oracle(A,B):
        GetXML(A,B)
        s = open("file.xml");
        return s

1 个答案:

答案 0 :(得分:1)

如果要将其作为常规字符串返回到文档中,则必须将_return类型设置为Unicode

如果要将其作为xml文档返回,则必须解析它(etree.parse("Databaze.xml"))并返回生成的ElementTree实例。在这种情况下,您的返回类型应为AnyXml

另见这些例子:

https://github.com/plq/spyne/blob/1f214d102913848cf9d18985d2d75ae1a97375de/examples/response_as_file_dynamic.py

https://github.com/plq/spyne/blob/1f214d102913848cf9d18985d2d75ae1a97375de/examples/response_as_xml_file.py

作为字符串发送将文档与父上下文隔离开来。这样效率更低(例如<字符变为&lt;)但其他方面无害。

作为文档发送使您的文档成为SOAP消息的一部分。它更有效但是它从父文档继承了名称空间前缀,这可能会对文档造成轻微的改变 - 即你输入的内容和你得到的内容可能不是逐字节相等的(但仍然是等效的)。 / p>

完全取决于用例。如有疑问,请以字符串形式返回。