Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Handle hoXSoapEnvelope
    Variant vXSoapBody
    Handle hoXSoapBody
    Variant vXMessageBody
    Handle hoXMessageBody
    String sSoapMessageXml
    String sTemp1
    Boolean bTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatXml)) To hoXSoapEnvelope
    If (Not(IsComObjectCreated(hoXSoapEnvelope))) Begin
        Send CreateComObject of hoXSoapEnvelope
    End

    Get ComLoadXmlFile Of hoXSoapEnvelope "soapMessage.xml" To iSuccess
    If (iSuccess <> True) Begin
        Get ComLastErrorText Of hoXSoapEnvelope To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    // The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
    Get ComTag Of hoXSoapEnvelope To sTemp1
    Showln "SOAP envelope tag: " sTemp1

    // The SOAP body (in this case) is a direct child of the SOAP envelope
    // and has the tag "soapenv:Body"
    Get ComFindChild Of hoXSoapEnvelope "soapenv:Body" To vXSoapBody
    If (IsComObject(vXSoapBody)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoXSoapBody
        Set pvComObject Of hoXSoapBody To vXSoapBody
    End
    Get ComLastMethodSuccess Of hoXSoapEnvelope To bTemp1
    If (bTemp1 = False) Begin
        Showln 'No direct child having the tag "soapenv:Body" was found.'
        Procedure_Return
    End

    // The SOAP message body is the direct child of the SOAP envelope body:
    Get ComFindChild Of hoXSoapBody "TimbreFiscalDigital" To vXMessageBody
    If (IsComObject(vXMessageBody)) Begin
        Get Create (RefClass(cComChilkatXml)) To hoXMessageBody
        Set pvComObject Of hoXMessageBody To vXMessageBody
    End
    Get ComLastMethodSuccess Of hoXSoapBody To bTemp1
    If (bTemp1 = False) Begin
        Showln 'No direct child having the tag "TimbreFiscalDigital" was found.'
        Send Destroy of hoXSoapBody
        Procedure_Return
    End

    // If desired, get the XML of just the SOAP message body:
    Get ComGetXml Of hoXSoapBody To sSoapMessageXml

    Send Destroy of hoXMessageBody
    Send Destroy of hoXSoapBody

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


End_Procedure