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) Iterate over Direct Child Nodes by Index

Demonstrates some ways to iterate over direct child nodes by index.

The input XML, available at http://www.chilkatsoft.com/data/get_child.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;
success: Integer;
i: Integer;

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

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

//  The NumChildren property contains the number of direct
//  child nodes.  Note: The child nodes under "xyz" are NOT
//  direct children of "root".  Therefore, the "root" node has
//  7 direct children
Memo1.Lines.Add('NumChildren = ' + IntToStr(xml.NumChildren));

//  Iterate over the direct children by index. The first child
//  is at index 0.

for i := 0 to xml.NumChildren - 1 do
  begin
    //   access the tag and content directly by index:
    Memo1.Lines.Add(IntToStr(i) + ': ' + xml.GetChildTagByIndex(i)
         + ' : ' + xml.GetChildContentByIndex(i));

  end;

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

//  Do the same as the above loop, but get the child node
//  and access the Tag and Content properties:
for i := 0 to xml.NumChildren - 1 do
  begin
    child := xml.GetChild(i);
    Memo1.Lines.Add(IntToStr(i) + ': ' + child.Tag
         + ' : ' + child.Content);

  end;

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

//  Do the same as the above loop, but instead of creating
//  a new object instance for each child, call GetChild2 to
//  update the object's reference instead.
for i := 0 to xml.NumChildren - 1 do
  begin
    //  Navigate to the Nth child.
    xml.GetChild2(i);
    Memo1.Lines.Add(IntToStr(i) + ': ' + xml.Tag
         + ' : ' + xml.Content);
    //  Navigate back up to the parent:
    xml.GetParent2();
  end;

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

//  Notice that the Content of the "xyz" node is empty.  This is correct.
//  The "xyz" node has no Content, but 2 direct children.

end;

 

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

Mail Component · .NET Email Component · XML Parser