当前将gSOAP从2.8.10升级到2.8.54。这是一个C ++代码生成工具,可以通过XML进行rpc。新版本生成的代码不会生成与早期版本兼容的XML。想知道是否有人在他们的C ++产品中研究/使用了这些版本的gSOAP,并发现用于封送处理的XML有所不同。
XML代码需要匹配,因为2.8.10产品需要与使用2.8.54的产品进行对话
我当前的问题是在动态生成的代码中为2.8.10生成XML的输入和数据的名称空间具有
if (soap_out_PointerTostd__string(soap, "ns:method", -1, &a->method, "xsd:string"))
return soap->error;
if (soap_out_PointerTons__ComplexType(soap, "ns:input", -1, &a->input, "ns:ComplexType"))
return soap->error;
2.8.54有
if (soap_out_PointerTostd__string(soap, "method", -1, &a->method, "xsd:string"))
return soap->error;
if (soap_out_PointerTons__ComplexType(soap, "input", -1, &a->input, "ns:ComplexType"))
return soap->error;
所以问题来了,ns:为什么被丢弃作为方法和输入?它也被删除以获取数据。
我已经尝试过-z1,-z2和-z3,但是都没有将ns添加到xml的“数据”,“方法”或“输入”标签中。我希望看到ns:data,ns:method和ns:input。
也尝试了其他排列(-i,-j)。
任何帮助表示赞赏。
有什么建议吗?
最佳答案
我有同样的问题。在我的soapcpp2.exe of 2.8.55
文件上运行*.h
时,'ns:'
消失了
最后,帮助解决此问题的方法是在所有其他*.h
属性部分的'//gsoap'
文件中添加以下行:
//gsoap ns schema elementForm: qualified
希望这会有所帮助
关于c++ - 从2.8.10升级到最新(2.8.54)的gSOAP没有ns:用于几个XML标签上的命名空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46669452/