Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Soap Spyne-是否保存生成的架构?_Soap_Schema_Spyne - Fatal编程技术网

Soap Spyne-是否保存生成的架构?

Soap Spyne-是否保存生成的架构?,soap,schema,spyne,Soap,Schema,Spyne,我有一个正在工作的Spyne/SOAP/WSDL服务器——如何保存生成的模式?我希望能够将生成的架构与现有架构进行比较,但从日志中看,架构似乎是作为临时文档生成的,然后被删除。有一种黑客方法可以做到这一点,即在Spyne库中找到使用后删除架构的代码,并注释掉删除内容。然后,您可以获取模式(日志记录有助于指示其位置),然后重新启用库代码。然而,如果有一些标志或控件生成了一个模式,并且至少说“不要删除它,在这里保存一个副本…”,那就更好了。我只是将这个功能添加到了神经元中 这里有一个更简洁的版本:

我有一个正在工作的Spyne/SOAP/WSDL服务器——如何保存生成的模式?我希望能够将生成的架构与现有架构进行比较,但从日志中看,架构似乎是作为临时文档生成的,然后被删除。

有一种黑客方法可以做到这一点,即在Spyne库中找到使用后删除架构的代码,并注释掉删除内容。然后,您可以获取模式(日志记录有助于指示其位置),然后重新启用库代码。然而,如果有一些标志或控件生成了一个模式,并且至少说“不要删除它,在这里保存一个副本…”,那就更好了。

我只是将这个功能添加到了神经元中

这里有一个更简洁的版本:

from lxml import etree

from spyne.interface.wsdl import Wsdl11
from spyne.test.sort_wsdl import sort_wsdl

app = Application(...) # a spyne.Application instance

# Hack to make WSDL generator happy
app.transport = "no_transport_at_all"

wsdl = Wsdl11(app.interface)

# A real URL can be passed here, if it's known in advance
wsdl.build_interface_document('hxxp://invalid_url')
doc = wsdl.get_interface_document()

# We need to do it via StringIO because sort_wsdl expects
# an ElementTree instance    
tree = etree.parse(StringIO(doc))
sort_wsdl(tree)

file_name = 'wsdl.%s.xml' % name

with open(file_name, 'w') as f:
    f.write(etree.tostring(elt, pretty_print=True))
如果只需要Xml架构文档,请改用XmlSchema类:

from spyne.interface.xml_schema import XmlSchema


app = Application(...) # a spyne.Application instance

document = XmlSchema(app.interface)
document.build_interface_document()

schemas = document.get_interface_document()

您有一个名称空间的dict:schema\u doc pairs in schemas.

为什么要否决?这是一个非常有道理的问题。