Perl Examples

ChilkatHOMEAndroid™ASPVisual BasicVB.NETC#iOS (IPhone)Objective-CC++CMFCDelphiFoxProJavaPerl
PHP ExtensionPHP ActiveXPythonPowerShellRubySQL ServerVBScript

Perl Examples

Quick Start
Unicode
Byte Array
Bz2
Certificates
CSV
Email
Encryption
FTP
HTML Conversion
HTTP
IMAP
MHT
MIME
POP3
RSA
S/MIME
Signatures
SMTP
Socket / SSL
Spider
SFTP
SSH Key
SSH
SSH Tunnel
Tar
HTTP Upload
XML
XMP
Zip

More Examples...
String
Amazon S3
Email Object
DKIM / DomainKey
NTLM
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
DH Key Exchange
DSA
Bzip2
LZW

 

 

 

 

 

 

 

Parse SOAP XML Response

Code to parse a SOAP XML response.

This is the SOAP response parsed by the code below:

<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
  <m:GetStockPriceResponse>
    <m:Price>34.5</m:Price>
  </m:GetStockPriceResponse>
</soap:Body>

 Chilkat Perl Module Downloads for Windows, Linux, and MAC OS X

use chilkat();



$xml = new chilkat::CkXml();

#  Load the XML object with the SOAP response.
#  The XML may be loaded from a file by calling
#  LoadXmlFile, or directly from a string by calling
#  LoadXml.
$success = $xml->LoadXmlFile("soapResponse.xml");
if ($success != 1) {
    print $xml->lastErrorText() . "\r\n";
    exit;
}

#  The quickest way to get a piece of data is w/ the
#  ChilkatPath method.
#  To get the content of the m:Price node:

$strPrice = $xml->chilkatPath("soap:Body|m:GetStockPriceResponse|m:Price|*");
print "Price = " . $strPrice . "\r\n";

#  ------------------------------------
#  Another way of doing it:

#  Another way to get it is to navigate to the node.
#  Navigate to soap:Body
$xml->FirstChild2();

#  Navigate to m:GetStockPriceResponse
#  You may call FirstChild2, or you may call GetChildWithTag2
#  to get the Nth direct child having a given tag.
#  In this case, get the 1st direct child having the tag
#  "m:GetStockPriceResponse"
#  (Indexing begins at 0, so the 1st occurance is at index 0.)
$bFound = $xml->GetNthChildWithTag2("m:GetStockPriceResponse",0);
if ($bFound != 1) {
    print "Did not find m:GetStockPriceResponse node." . "\r\n";
    exit;
}

#  One more to go..
$bFound = $xml->GetNthChildWithTag2("m:Price",0);
if ($bFound != 1) {
    print "Did not find m:Price node." . "\r\n";
    exit;
}

#  The content of the "m:Price" node is "34.5"
$strPrice = $xml->content();
print "Price = " . $strPrice . "\r\n";

#  Restore the xml object's internal reference to the root
#  of the XML document:
$xml->GetRoot2();

#  ------------------------------------
#  Another way of doing it:

#  If you know that the node w/ the content you want to
#  extract is uniquely tagged (i.e. no other node has the same
#  tag), then search for the node having the tag:
$bFound = $xml->SearchForTag2($xml,"m:Price");
if ($bFound != 1) {
    #  Not found...
    exit;
}

#  The content of the "m:Price" node is "34.5"
$strPrice = $xml->content();
print "Price = " . $strPrice . "\r\n";

#  Restore the xml object's internal reference to the root
#  of the XML document:
$xml->GetRoot2();

#  ------------------------------------
#  Another way of doing it:

#  Again, assuming there is only a single node with the
#  tag to be fetched:
$strPrice = $xml->accumulateTagContent("m:Price","");
print "Price = " . $strPrice . "\r\n";

#  There are many other possible ways of doing the same thing...

 

© 2000-2010 Chilkat Software, Inc. All Rights Reserved.