Delphi Examples

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

Delphi Examples

Bounced Mail
Bz2
Character Encoding
CSV
DKIM / DomainKey
Digital Certificates
Digital Signatures
DH Key Exchange
DSA
Email
Email Object
FTP
HTML Conversion
HTTP
IMAP
Encryption
MHT / HTML Email
NTLM
POP3
RSA
S/MIME
SMTP
Socket
Spider
SFTP
SSH
SSH Key
SSH Tunnel
String
Tar
Upload
XML
XMP
Zip Compression

More Examples...
Amazon S3
Byte Array
FileAccess
RSS
Atom
Self-Extractor
Service
PPMD
Deflate
Bzip2
LZW

Type Conversion

 

Article: Understanding COM References in Delphi

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>

Download Chilkat XML ActiveX

uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, StdCtrls,
    CHILKATXMLLib_TLB,
    OleCtrls;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
bFound: Integer;
xml: CHILKATXMLLib_TLB.IChilkatXml;
strPrice: String;

begin


xml := TChilkatXml.Create(Self).ControlInterface;

//  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) then
  begin
    Memo1.Lines.Add(xml.LastErrorText);
    Exit;
  end;

//  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|*');
Memo1.Lines.Add('Price = ' + strPrice);

//  ------------------------------------
//  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) then
  begin
    Memo1.Lines.Add('Did not find m:GetStockPriceResponse node.');
    Exit;
  end;

//  One more to go..
bFound := xml.GetNthChildWithTag2('m:Price',0);
if (bFound <> 1) then
  begin
    Memo1.Lines.Add('Did not find m:Price node.');
    Exit;
  end;

//  The content of the "m:Price" node is "34.5"
strPrice := xml.Content;
Memo1.Lines.Add('Price = ' + strPrice);

//  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) then
  begin
    //  Not found...
    Exit;
  end;

//  The content of the "m:Price" node is "34.5"
strPrice := xml.Content;
Memo1.Lines.Add('Price = ' + strPrice);

//  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','');
Memo1.Lines.Add('Price = ' + strPrice);

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

end;

 

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

Mail Component · .NET Email Component · XML Parser