2017-02-17 1 views
0

어쨌든 (gsoap을 사용하여) 직렬화 된 XML 메시지를 인쇄 할 수 있습니다. 예를 들어gSOAP 직렬화 된 XML을 문자열로

:

soap_serialize_ns1__Response(soap, &ns2__UpdatedResponse); 

나는 직렬화 (XML)이 어떻게 생겼는지 볼 수 있도록하고 싶습니다.

누구나 알고 계십니까?

답변

1

어쨌든 serialize 된 xml 메시지 (gsoap 사용)를 인쇄 할 수 있습니다.

나는 serialize 된 (xml)이 어떻게 보이는지보고 싶습니다.

XML의 문자열에 직렬화 된 개체를 "인쇄"하려면 C 또는 C++로 코딩하는지에 따라 두 가지 옵션이 있습니다.

C 코딩

는 다음을 수행하십시오

struct soap *soap = soap_new(); 
... 
const char *str = NULL; 
soap->os = &str; // assign a string to write output to 
soap_write_ns1__Response(soap, &response); 
soap->os = NULL; // no longer writing to the string 
printf("The XML is:%s\n", str); 
... 
soap_end(soap); // warning: this deletes str with XML too! 
str = NULL;  // so make it NULL as good practice 
soap_free(soap); 

C 코딩 ++ 다음을 수행하십시오

soap *soap = soap_new(); 
... 
std::stringstream ss; 
soap->os = &ss; // assign a stringstream to write output to 
soap_write_ns1__Response(soap, &response); 
soap->os = NULL; // no longer writing to the stream 
std::cout << "The XML is:\n" << ss.str(); 
... 
soap_destroy(soap); 
soap_end(soap); 
soap_free(soap); 

세부 사항에 대한 자신의 웹 사이트에 gSOAP XML databindgs를 참조하십시오. 나를 위해

0

는 아래와 같이 일한 :

int MyService::ConfirmPayment(_ns1__PaymentConfirmationRequest *ns1__PaymentConfirmationRequest, std::string &ns1__PaymentConfirmationResult) { 

    struct soap *soap = soap_new(); 
    std::stringstream ss; 
    soap->os = &ss; 
    soap_write__ns1__C2BPaymentConfirmationRequest(soap, ns1__C2BPaymentConfirmationRequest); 
    soap->os = NULL; 
    std::cout << "The XML is:\n" << ss.str(); 

    soap_destroy(soap); 
    soap_end(soap); 
    soap_free(soap); 

    ns1__PaymentConfirmationResult = "Transaction Queued!" 
    return SOAP_OK; 
}