Hi,

I am new to gSOAP. I tried to deserialize a XML file like below:
 <Client>
  <TargetCode key="ZipPlus4">12345-6789</TargetCode> 
  <TargetCode key="Gender">Male</TargetCode> 
 </Client>

The "Client" object I got has no value for the "TargetCode" element's data (in 
this case, "12345-6789" and "Male"). If I serialize the object, I get:
 <Client>
  <TargetCode key="ZipPlus4"></TargetCode> 
  <TargetCode key="Gender"></TargetCode> 
 </Client>

I tried wsdl2h with -d option, linked dom.cpp when compiling, but I still 
cannot make it work. Anyone can give me a hand? My test program is simple:

int main()
{
        soap_dom_element dom;
        dom.soap = soap_new1(SOAP_DOM_NODE);
        ns2__PlacementRequestType *aPlaceReq = NULL;
        soap_init(dom.soap);
        soap_begin(dom.soap);
        std::fstream fileStream;
        fileStream.open("client.xml", std::fstream::in);
        dom.soap->is = &fileStream;
        soap_begin_recv(dom.soap);
        if ((aPlaceReq = soap_get_ns2__ClientType(dom.soap, NULL, NULL, NULL)) 
== NULL)
        {
                // error
                std::cout << "Error in deserializing the input." << std::endl;
                return 0;
        }
                
        soap_end_recv(dom.soap);

        // Serialize to validate.
        std::fstream vfileStream;
        vfileStream.open("vtest.xml", std::fstream::out);
        dom.soap->os = &vfileStream;
        soap_begin_send(dom.soap);
        aPlaceReq->soap_serialize(dom.soap);
        aPlaceReq->soap_put(dom.soap, "client", NULL);
        soap_end_send(dom.soap);

        // clean up
        soap_destroy(dom.soap);
        soap_end(dom.soap);
        soap_done(dom.soap);
        fileStream.close();
        
        return 0;
}

I compile it with command "g++ -o test test.cpp soapC.cpp dom.cpp -lgsoap++"

Thanks in advance!!

Gao

Reply via email to