如何从我的回复中省略tns并更改标签名称? 我的回应就是这样
<soap11env:Envelope xmlns:soap11env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="spyne.example">
<soap11env:Body>
<tns:FnSchedule_CityResponse>
<tns:FnSchedule_CityResult>
<tns:ErrorString></tns:ErrorString>
<tns:CityName>HYDERABAD</tns:CityName>
<tns:CityId>1</tns:CityId>
<tns:ErrId>0</tns:ErrId>
</tns:FnSchedule_CityResult>
</tns:FnSchedule_CityResponse>
</soap11env:Body>
</soap11env:Envelope>
我要删除tns并将“ soap11env”更改为“ soap”。 拥有这些值会导致验证问题。
我在堆栈溢出时提到了这个问题,实现了它,但没有帮助。 Remove the namespace from Spyne response variables
答案 0 :(得分:0)
要将soap11env更改为soap,只需使用覆盖响应即可
application.interface.nsmap['soap'] = application.interface.nsmap['soap11env']
'tns'或目标名称空间一定不能更改,但是可能会出现一些情况,可能需要更改名称才能完全测试某些内容。
要更改名称空间,
def on_method_return_string(ctx):
ctx.out_string[0] = ctx.out_string[0].replace(b'ns4', b'diffgr')
ctx.out_string[0] = ctx.out_string[0].replace(b'ns5', b'msdata')
YourModelClassName.event_manager.add_listener('method_return_string', on_method_return_string)
我在这里所做的是,将名称空间ns4替换为diffgr,将ns5替换为msdata。 ns4和ns5是我在某些第三方应用程序的响应中拥有的子名称空间。我在为spyne维护的邮件列表中找到了该解决方案。