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

(Delphi) Traverse Direct Children via FirstChild / NextSibling, or LastChild / PreviousSibling

Demonstrates some ways to iterate over direct child nodes using the FirstChild / NextSibling and LastChild / PreviousSibling methods.

The input XML, available at http://www.chilkatsoft.com/data/fruit.xml, is this:

<root>
    <fruit color="red">apple</fruit>
    <fruit color="green">pear</fruit>
    <veg color="orange">carrot</veg>
    <meat animal="cow">beef</meat>
    <xyz>
        <fruit color="blue">blueberry</fruit>
        <veg color="green">broccoli</veg>
    </xyz>
    <fruit color="purple">grape</fruit>
    <cheese color="yellow">cheddar</cheese>
</root>

Download Chilkat XML ActiveX

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

...

procedure TForm1.Button1Click(Sender: TObject);
var
xml: CHILKATXMLLib_TLB.IChilkatXml;
child: CHILKATXMLLib_TLB.IChilkatXml;
nextSibling: CHILKATXMLLib_TLB.IChilkatXml;
prevSibling: CHILKATXMLLib_TLB.IChilkatXml;
success: Integer;

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

//  The sample input XML is available at http://www.chilkatsoft.com/data/fruit.xml
success := xml.LoadXmlFile('fruit.xml');
if (success <> 1) then
  begin
    Memo1.Lines.Add(xml.LastErrorText);
    Exit;
  end;

//  Iterate over the direct children by using FirstChild / NextSibling
child := xml.FirstChild();
while not (child = nil ) do
  begin
    Memo1.Lines.Add(child.Tag + ' : '
         + child.Content);
    nextSibling := child.NextSibling();

    child := nextSibling;
  end;

Memo1.Lines.Add('-----');

//  Do the same, but with FirstChild2 / NextSibling2 to avoid
//  creating so many XML object instances:
success := xml.FirstChild2();
while success = 1 do
  begin
    Memo1.Lines.Add(xml.Tag + ' : ' + xml.Content);
    success := xml.NextSibling2();
  end;

//  Revert back up to the parent:
xml.GetParent2();

Memo1.Lines.Add('-----');

//  Iterate in reverse order using LastChild / PreviousSibling
child := xml.LastChild();
while not (child = nil ) do
  begin
    Memo1.Lines.Add(child.Tag + ' : '
         + child.Content);
    prevSibling := child.PreviousSibling();

    child := prevSibling;
  end;

Memo1.Lines.Add('-----');

//  Do the same, but with LastChild2 / PreviousSibling2 to avoid
//  creating so many XML object instances:
success := xml.LastChild2();
while success = 1 do
  begin
    Memo1.Lines.Add(xml.Tag + ' : ' + xml.Content);
    success := xml.PreviousSibling2();
  end;

//  Revert back up to the parent:
xml.GetParent2();

end;

 

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

Mail Component · .NET Email Component · XML Parser