Sample code for 30+ languages & platforms
Tcl

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

Tcl

load ./chilkat.dll

set success 0

set xSoapEnvelope [new_CkXml]

set success [CkXml_LoadXmlFile $xSoapEnvelope "soapMessage.xml"]
if {$success != 1} then {
    puts [CkXml_lastErrorText $xSoapEnvelope]
    delete_CkXml $xSoapEnvelope
    exit
}

# The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
puts "SOAP envelope tag: [CkXml_tag $xSoapEnvelope]"

# The SOAP body (in this case) is a direct child of the SOAP envelope
# and has the tag "soapenv:Body"
# xSoapBody is a CkXml
set xSoapBody [CkXml_FindChild $xSoapEnvelope "soapenv:Body"]
if {[CkXml_get_LastMethodSuccess $xSoapEnvelope] == 0} then {
    puts "No direct child having the tag \"soapenv:Body\" was found."
    delete_CkXml $xSoapEnvelope
    exit
}

# The SOAP message body is the direct child of the SOAP envelope body:
# xMessageBody is a CkXml
set xMessageBody [CkXml_FindChild $xSoapBody "TimbreFiscalDigital"]
if {[CkXml_get_LastMethodSuccess $xSoapBody] == 0} then {
    puts "No direct child having the tag \"TimbreFiscalDigital\" was found."
    delete_CkXml $xSoapBody

    delete_CkXml $xSoapEnvelope
    exit
}

# If desired, get the XML of just the SOAP message body:
set soapMessageXml [CkXml_getXml $xSoapBody]

delete_CkXml $xMessageBody

delete_CkXml $xSoapBody

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

delete_CkXml $xSoapEnvelope