Programming Examples

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

C Examples

Bounced Mail
Bz2
Certificates/Keys
Charset
CSV
DKIM / DomainKey
Diffie-Hellman
DSA
Email Object
Encryption
FileAccess
FTP
HTML Conversion
HTTP
IMAP
MHT / HTML Email
MIME
NTLM
POP3
RSA
SMTP
Socket
Spider
SSH Key
SSH
SSH Tunnel
SFTP
Tar
Upload
XML
Zip
Amazon S3

 

 

 

 

 

 

 

 

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>

Downloads:

MS Windows Visual C/C++ Libraries
Linux/CentOS C/C++ Libraries
MAC OS X C/C++ Libraries
Solaris C/C++ Libraries
C++ Builder Libraries
FreeBSD C++ Libraries
HP-UX C++ Libraries
BlackBerry QNX C++ Libraries
#include <C_CkXml.h>

void ChilkatSample(void)
    {
    BOOL success;
    BOOL bFound;
    HCkXml xml;
    const char * strPrice;



    xml = CkXml_Create();

    //  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 = CkXml_LoadXmlFile(xml,"soapResponse.xml");
    if (success != TRUE) {
        printf("%s\n",CkXml_lastErrorText(xml));
        return;
    }

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

    strPrice = CkXml_chilkatPath(xml,"soap:Body|m:GetStockPriceResponse|m:Price|*");
    printf("Price = %s\n",strPrice);

    //  ------------------------------------
    //  Another way of doing it:

    //  Another way to get it is to navigate to the node.
    //  Navigate to soap:Body
    CkXml_FirstChild2(xml);

    //  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 = CkXml_GetNthChildWithTag2(xml,"m:GetStockPriceResponse",0);
    if (bFound != TRUE) {
        printf("Did not find m:GetStockPriceResponse node.\n");
        return;
    }

    //  One more to go..
    bFound = CkXml_GetNthChildWithTag2(xml,"m:Price",0);
    if (bFound != TRUE) {
        printf("Did not find m:Price node.\n");
        return;
    }

    //  The content of the "m:Price" node is "34.5"
    strPrice = CkXml_content(xml);
    printf("Price = %s\n",strPrice);

    //  Restore the xml object's internal reference to the root
    //  of the XML document:
    CkXml_GetRoot2(xml);

    //  ------------------------------------
    //  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 = CkXml_SearchForTag2(xml,xml,"m:Price");
    if (bFound != TRUE) {
        //  Not found...
        return;
    }

    //  The content of the "m:Price" node is "34.5"
    strPrice = CkXml_content(xml);
    printf("Price = %s\n",strPrice);

    //  Restore the xml object's internal reference to the root
    //  of the XML document:
    CkXml_GetRoot2(xml);

    //  ------------------------------------
    //  Another way of doing it:

    //  Again, assuming there is only a single node with the
    //  tag to be fetched:
    strPrice = CkXml_accumulateTagContent(xml,"m:Price","");
    printf("Price = %s\n",strPrice);

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


    CkXml_Dispose(xml);

    }

Need a specific example? Send a request to support@chilkatsoft.com

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