Sample code for 30+ languages & platforms
Xbase++

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 Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oXSoapEnvelope
LOCAL oXSoapBody
LOCAL oXMessageBody
LOCAL cSoapMessageXml

nSuccess := 0

oXSoapEnvelope := CreateObject("Chilkat.Xml")

nSuccess := oXSoapEnvelope:LoadXmlFile("soapMessage.xml")
IF (nSuccess != 1)
    ? oXSoapEnvelope:LastErrorText
    oXSoapEnvelope:destroy()
    RETURN
ENDIF

//  The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
? "SOAP envelope tag: " + oXSoapEnvelope:Tag

//  The SOAP body (in this case) is a direct child of the SOAP envelope
//  and has the tag "soapenv:Body"
oXSoapBody := oXSoapEnvelope:FindChild("soapenv:Body")
IF (oXSoapEnvelope:LastMethodSuccess == 0)
    ? 'No direct child having the tag "soapenv:Body" was found.'
    oXSoapEnvelope:destroy()
    RETURN
ENDIF

//  The SOAP message body is the direct child of the SOAP envelope body:
oXMessageBody := oXSoapBody:FindChild("TimbreFiscalDigital")
IF (oXSoapBody:LastMethodSuccess == 0)
    ? 'No direct child having the tag "TimbreFiscalDigital" was found.'
    oXSoapBody:destroy()
    oXSoapEnvelope:destroy()
    RETURN
ENDIF

//  If desired, get the XML of just the SOAP message body:
cSoapMessageXml := oXSoapBody:GetXml()

oXMessageBody:destroy()
oXSoapBody:destroy()

//  --------------------------------------------------------------------------------
//  Also see Chilkat's Online WSDL Code Generator
//  to generate code and SOAP Request and Response XML for each operation in a WSDL.
//  --------------------------------------------------------------------------------

oXSoapEnvelope:destroy()