C++
C++
Access SOAP Body XML
Demonstrates how to access the SOAP body in XML.
<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
<soapenv:Body>
<tfd:TimbreFiscalDigital version="1.0" />
</soapenv:Body>
</soapenv:Envelope>
Chilkat C++ Downloads
#include <CkXml.h>
void ChilkatSample(void)
{
bool success = false;
CkXml xSoapEnvelope;
success = xSoapEnvelope.LoadXmlFile("soapMessage.xml");
if (success != true) {
std::cout << xSoapEnvelope.lastErrorText() << "\r\n";
return;
}
// The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
std::cout << "SOAP envelope tag: " << xSoapEnvelope.tag() << "\r\n";
// The SOAP body (in this case) is a direct child of the SOAP envelope
// and has the tag "soapenv:Body"
CkXml *xSoapBody = xSoapEnvelope.FindChild("soapenv:Body");
if (xSoapEnvelope.get_LastMethodSuccess() == false) {
std::cout << "No direct child having the tag \"soapenv:Body\" was found." << "\r\n";
return;
}
// The SOAP message body is the direct child of the SOAP envelope body:
CkXml *xMessageBody = xSoapBody->FindChild("TimbreFiscalDigital");
if (xSoapBody->get_LastMethodSuccess() == false) {
std::cout << "No direct child having the tag \"TimbreFiscalDigital\" was found." << "\r\n";
delete xSoapBody;
return;
}
// If desired, get the XML of just the SOAP message body:
const char *soapMessageXml = xSoapBody->getXml();
delete xMessageBody;
delete xSoapBody;
// --------------------------------------------------------------------------------
// Also see Chilkat's Online WSDL Code Generator
// to generate code and SOAP Request and Response XML for each operation in a WSDL.
// --------------------------------------------------------------------------------
}