2015-12-09 71 views
0

使用gsoap,我为肥皂服务器创建了一个客户端。 在我创建源的wsdl中,有一个类型为NotificationMessage类型的元素,如wsnt中所定义。
有什么办法将其转换为自定义对象吗?
我需要类似以下内容:gsoap将anyAttribute转换为自定义类型

/* get response */ 
_wsnt__NotificationMessageHolderType_Message message = response.Message; 
if (message is _tt__Message) 
{ 
    _tt__Message m = message as _tt__Message; 
    /* do something with m */ 
} else if (message is std::string) { 
    std::string str = message as std::string; 
    /* do something with str */ 
} else { 
    Warning("Unrecognized type"); 
} 

任何帮助,将不胜感激!

回答

0

也许使用wsdl2h选项-d?这会生成添加DOM支持的代码(不要同时使用选项-x)。

DOM节点图xsd__anyType拥有Message的内容。 DOM内容可以设置和读取,也可以包含可序列化的数据,如XML DOM and XPath中对gSOAP所述。

要在XML DOM中启用C/C++的序列化,请使用SOAP_DOM_NODE。 XML元素标记名称应与C/C++类型的名称匹配,以将其自动反序列化为C/C++对象。

因为嵌入_wsnt__NotificationMessageHolderType_Message类,所以不能像在全局定义的类中所做的那样在typemap.dat中给出重载定义(至少不能使用gSOAP到2.8.28)。

相关问题