2015-07-11 4 views
0

У меня есть рабочий сервер Spyne/SOAP/WSDL - как я могу сохранить созданную схему? Я хочу, чтобы иметь возможность сравнивать сгенерированную схему с существующей схемой, но она выглядит из журналов, как схема создается как временный документ и затем удаляется.Spyne - сохранить сгенерированную схему?

+0

Почему downvote? Это очень правильный вопрос. –

ответ

0

Существует хакерский способ сделать это, а именно найти код в библиотеке Spyne, который удаляет схему после ее использования и комментирует удаление. Затем вы можете захватить схему (журнал регистрации помогает указать, где она), а затем снова включить код библиотеки. Однако было бы намного лучше, если бы был какой-то флаг или элемент управления, который либо сгенерировал схему, либо, по крайней мере, сказал: «Не удаляйте ее, сохраните копию здесь ...».

0

Я просто добавил эту функциональность к нейронам.

https://github.com/plq/neurons/blob/0f350bbdbcd0eda6a3132311a32548b7a8007b53/neurons/daemon/main.py#L106

Вот уборщик версия:

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_doc пары в схемах.

Смежные вопросы