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) XML SearchForAttribute Method

Demonstrates the SearchForAttribute method.

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

<root>
    <searchRoot>
        <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>
    </searchRoot>
    <fruit color="red">strawberry</fruit>
    <fruit color="orange">peach</fruit>
    <root></root>
</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;
xSearchRoot: CHILKATXMLLib_TLB.IChilkatXml;
xBeginAfter: CHILKATXMLLib_TLB.IChilkatXml;
xFound: CHILKATXMLLib_TLB.IChilkatXml;
success: Integer;
xSearch: CHILKATXMLLib_TLB.IChilkatXml;

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

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

//  Search the sub-tree rooted at "searchRoot"
xSearchRoot := xml.FindChild('searchRoot');

//  Search for all "fruit" nodes having a color attribute
//  where the name of the color ends in "e"
xBeginAfter := nil;
xFound := xSearchRoot.SearchForAttribute(xBeginAfter,'fruit','color','*e');
while not (xFound = nil ) do
  begin

    Memo1.Lines.Add(xFound.Content + ': '
         + xFound.GetAttrValue('color'));

    xBeginAfter := xFound;
    xFound := xSearchRoot.SearchForAttribute(xBeginAfter,'fruit','color','*e');
  end;

//  The correct output is:
//  grape: purple
//  blueberry: blue

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

//  ---------------------------------------------------------------------------------
//  Now do the same, but instead use SearchForAttribute2
//  which updates the internal reference of the caller instead
//  of returning the found node.

xBeginAfter := xSearchRoot.GetSelf();
xSearch := xSearchRoot.GetSelf();

success := xSearch.SearchForAttribute2(xBeginAfter,'fruit','color','*e');
while success = 1 do
  begin

    Memo1.Lines.Add(xSearch.Content + ': '
         + xSearch.GetAttrValue('color'));

    //  Copy the internal references so that the next search
    //  begins after the found node.
    xBeginAfter.CopyRef(xSearch);
    xSearch.CopyRef(xSearchRoot);

    success := xSearch.SearchForAttribute2(xBeginAfter,'fruit','color','*e');
  end;


end;

 

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

Mail Component · .NET Email Component · XML Parser