Hello, Newbie question.
I want to access (as C++ client) a some WebService operations. On the server, these are implemented with AXIS; they return a HashMap, and AXIS generates for them an XML output composed of a (multiRef) sequence of key/value pairs, similar to this: ====== <ns1:myMethodNameResponse soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns1="http://myWebService"> <myMethodNameReturn soapenc:arrayType="xsd:anyType[1]" xsi:type="soapenc:Array" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"> <myMethodNameReturn href="#id0"/> </myMethodNameReturn> </ns1:myMethodNameResponse> <multiRef id="id0" soapenc:root="0" soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xsi:type="ns2:Map" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:ns2="http://xml.apache.org/xml-soap"> <item> <key xsi:type="soapenc:string">requestedId</key> <value xsi:type="soapenc:int">5912342</value> </item> </multiRef> ====== Since AXIS exports an "abstract" complex type for this kind of answers: ====== <schema targetNamespace="http://myWebService/" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="ArrayOf_xsd_anyType"> <complexContent> <restriction base="soapenc:Array"> <attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:anyType[]"/> </restriction> </complexContent> </complexType> </schema> ====== wsdl2h by default proceeds to recognize these as "array of anyType": ====== /// SOAP encoded array of xs:anyType class ArrayOf_USCORExsd_USCOREanyType : public xsd__anyType { public: /// Pointer to array of xsd__anyType*. xsd__anyType* *__ptr ; /// Size of the dynamic array. int __size ; /// Offset for partially transmitted arrays (uncomment only when required). // int __offset ; }; ====== When keeping this code, the structure output by calling the request method contains an array of strings (the "anyType") with the raw XML in them, eg "<item><key>...</value></item>". Of course, I would like to have wsdl2h expand that complex type as: ====== ... { std::vector<keyvalpair> item; } class keyvalpair { public: xsd__string key; xsd__string value; }; ====== Is there a way to get typemap.dat to instruct wsdl2h towards that? I could not sort this out from the docs, and my blind attempts failed. thanks! Uwe