Sample code for 30+ languages & platforms
PureBasic

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

PureBasic
IncludeFile "CkXml.pb"

Procedure ChilkatExample()

    success.i = 0

    xSoapEnvelope.i = CkXml::ckCreate()
    If xSoapEnvelope.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    success = CkXml::ckLoadXmlFile(xSoapEnvelope,"soapMessage.xml")
    If success <> 1
        Debug CkXml::ckLastErrorText(xSoapEnvelope)
        CkXml::ckDispose(xSoapEnvelope)
        ProcedureReturn
    EndIf

    ; The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
    Debug "SOAP envelope tag: " + CkXml::ckTag(xSoapEnvelope)

    ; The SOAP body (in this case) is a direct child of the SOAP envelope
    ; and has the tag "soapenv:Body"
    xSoapBody.i = CkXml::ckFindChild(xSoapEnvelope,"soapenv:Body")
    If CkXml::ckLastMethodSuccess(xSoapEnvelope) = 0
        Debug "No direct child having the tag " + Chr(34) + "soapenv:Body" + Chr(34) + " was found."
        CkXml::ckDispose(xSoapEnvelope)
        ProcedureReturn
    EndIf

    ; The SOAP message body is the direct child of the SOAP envelope body:
    xMessageBody.i = CkXml::ckFindChild(xSoapBody,"TimbreFiscalDigital")
    If CkXml::ckLastMethodSuccess(xSoapBody) = 0
        Debug "No direct child having the tag " + Chr(34) + "TimbreFiscalDigital" + Chr(34) + " was found."
        CkXml::ckDispose(xSoapBody)

        CkXml::ckDispose(xSoapEnvelope)
        ProcedureReturn
    EndIf

    ; If desired, get the XML of just the SOAP message body:
    soapMessageXml.s = CkXml::ckGetXml(xSoapBody)

    CkXml::ckDispose(xMessageBody)

    CkXml::ckDispose(xSoapBody)

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


    CkXml::ckDispose(xSoapEnvelope)


    ProcedureReturn
EndProcedure