Sample code for 30+ languages & platforms
Perl

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

Perl
use chilkat();

$success = 0;

$xSoapEnvelope = chilkat::CkXml->new();

$success = $xSoapEnvelope->LoadXmlFile("soapMessage.xml");
if ($success != 1) {
    print $xSoapEnvelope->lastErrorText() . "\r\n";
    exit;
}

# The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"
print "SOAP envelope tag: " . $xSoapEnvelope->tag() . "\r\n";

# The SOAP body (in this case) is a direct child of the SOAP envelope
# and has the tag "soapenv:Body"
# xSoapBody is a Xml
$xSoapBody = $xSoapEnvelope->FindChild("soapenv:Body");
if ($xSoapEnvelope->get_LastMethodSuccess() == 0) {
    print "No direct child having the tag \"soapenv:Body\" was found." . "\r\n";
    exit;
}

# The SOAP message body is the direct child of the SOAP envelope body:
# xMessageBody is a Xml
$xMessageBody = $xSoapBody->FindChild("TimbreFiscalDigital");
if ($xSoapBody->get_LastMethodSuccess() == 0) {
    print "No direct child having the tag \"TimbreFiscalDigital\" was found." . "\r\n";

    exit;
}

# If desired, get the XML of just the SOAP message body:
$soapMessageXml = $xSoapBody->getXml();

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