2015-12-09 4 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.

Чтобы включить сериализацию C/C++ в XML DOM, используйте SOAP_DOM_NODE. Имя тега элемента XML должно совпадать с именем типа C/C++ для десериализации его автоматически в объект C/C++.

Поскольку встроен класс _wsnt__NotificationMessageHolderType_Message, вы не можете дать переопределяющее определение в typemap.dat, как это можно сделать для общедоступных классов (по крайней мере, не с gSOAP до 2.8.28).

 Смежные вопросы

  • Нет связанных вопросов^_^