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 Children with a Specific Tag

Demonstrates how to iterate over direct children having a specific tag.

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;
numWithTag: Integer;
i: Integer;
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;

//   Get the number of direct children having the tag "fruit"
numWithTag := xml.NumChildrenHavingTag('fruit');

if (numWithTag > 0) then
  begin

    for i := 0 to numWithTag - 1 do
      begin
        child := xml.GetNthChildWithTag('fruit',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 GetNthChildWithTag2 to
    //  update the object's reference instead.
    for i := 0 to numWithTag - 1 do
      begin
        //  Navigate to the Nth child.
        xml.GetNthChildWithTag2('fruit',i);
        Memo1.Lines.Add(IntToStr(i) + ': ' + xml.Tag
             + ' : ' + xml.Content);
        //  Navigate back up to the parent:
        xml.GetParent2();
      end;

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

  end;


end;

 

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

Mail Component · .NET Email Component · XML Parser