2015-12-09 48 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)。

相關問題