目前将gSOAP从2.8.10升级到2.8.54。这是一个c ++代码生成工具,允许rpc通过XML。新版本生成的代码不会生成与早期版本兼容的XML。想知道是否有人在他们的C ++产品中查看/使用过这些版本的gSOAP,并发现用于编组的XML存在差异。
XML代码需要匹配,因为2.8.10产品需要与使用2.8.54的产品交谈 我当前的问题是动态生成的代码中的输入和数据的名称空间,该代码生成了2.5.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'data','method'或'input'标签。我希望看到ns:data,ns:方法和ns:输入。
尝试了其他排列(-i,-j)。 任何帮助表示赞赏。
有什么建议吗?
答案 0 :(得分:3)
我遇到了同样的问题。在我的soapcpp2.exe of 2.8.55
文件上运行*.h
时,'ns:'
消失了
最后,帮助解决此问题的方法是在*.h
文件中添加以下所有其他'//gsoap'
属性部分中的以下行:
//gsoap ns schema elementForm: qualified
希望这会有所帮助