Sample code for 30+ languages & platforms
Go

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

Go
    success := false

    xSoapEnvelope := chilkat.NewXml()

    success = xSoapEnvelope.LoadXmlFile("soapMessage.xml")
    if success != true {
        fmt.Println(xSoapEnvelope.LastErrorText())
        xSoapEnvelope.DisposeXml()
        return
    }

    // The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
    fmt.Println("SOAP envelope tag: ", xSoapEnvelope.Tag())

    // The SOAP body (in this case) is a direct child of the SOAP envelope
    // and has the tag "soapenv:Body"
    xSoapBody := xSoapEnvelope.FindChild("soapenv:Body")
    if xSoapEnvelope.LastMethodSuccess() == false {
        fmt.Println("No direct child having the tag \"soapenv:Body\" was found.")
        xSoapEnvelope.DisposeXml()
        return
    }

    // The SOAP message body is the direct child of the SOAP envelope body:
    xMessageBody := xSoapBody.FindChild("TimbreFiscalDigital")
    if xSoapBody.LastMethodSuccess() == false {
        fmt.Println("No direct child having the tag \"TimbreFiscalDigital\" was found.")
        xSoapBody.DisposeXml()
        xSoapEnvelope.DisposeXml()
        return
    }

    // If desired, get the XML of just the SOAP message body:
    soapMessageXml := xSoapBody.GetXml()

    xMessageBody.DisposeXml()
    xSoapBody.DisposeXml()

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

    xSoapEnvelope.DisposeXml()