我如何使用 Spyne return 一个 XML 文件?

How can I return an XML file with Spyne?

我有 Flask-Spyne 服务器(网络服务),我想 return (return 给客户,他会问)一个 XML 文件.

我想这样做:

有什么办法吗?

这是我的代码:

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

如果您想 return 它作为文档中的常规字符串,您必须将 _return 类型设置为 Unicode.

如果您想 return 它作为 xml 文档,您必须解析它 (etree.parse("Databaze.xml")) 和 return 生成的 ElementTree 实例。在这种情况下,您的 return 类型应该是 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 消息的一部分。它效率更高,但它会从父文档继承名称空间前缀,这可能会导致文档发生轻微变化——即您输入的内容和返回的内容可能逐字节不相等(但仍然等效)。

这完全取决于用例。如有疑问,return as string.