Sample code for 30+ languages & platforms
Delphi DLL

Demonstrate the XML FindNextRecord Method

See more XML Examples

Imagine we have an XML file as follows:
<CompleteMultipartUpload>
  <Part>
    <PartNumber>1</PartNumber>
    <ETag>abc</ETag>
  </Part>
  <Part>
    <PartNumber>2</PartNumber>
    <ETag>def</ETag>
  </Part>
  <Part>
    <PartNumber>3</PartNumber>
    <ETag>ghi</ETag>
  </Part>
</CompleteMultipartUpload>
We want to find the record where PartNumber = 2. To do so, we simply position ourselves at the first "Part" tag, and then call FindNextRecord. (See below..)

Chilkat Delphi DLL Downloads

Delphi DLL
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Xml;

...

procedure TForm1.Button1Click(Sender: TObject);
var
xml: HCkXml;
foundRec: HCkXml;

begin
xml := CkXml_Create();

CkXml_LoadXmlFile(xml,'qa_data/xml/multipartUpload.xml');

// Position ourselves at the 1st record.
CkXml_GetChild2(xml,0);

foundRec := CkXml_FindNextRecord(xml,'PartNumber','2');
if (CkXml_getLastMethodSuccess(xml) = True) then
  begin
    Memo1.Lines.Add('Found the record where PartNumber = 2.');
    Memo1.Lines.Add(CkXml__getXml(foundRec));

    // Let's examine the ETag for this record...
    Memo1.Lines.Add('ETag for PartNumber 2 = ' + CkXml__getChildContent(foundRec,'ETag'));
    CkXml_Dispose(foundRec);
  end
else
  begin
    Memo1.Lines.Add('No record exists where PartNumber = 2.');
  end;

// What if we want to find the record where ETag = "abc"?
foundRec := CkXml_FindNextRecord(xml,'ETag','abc');
if (CkXml_getLastMethodSuccess(xml) = True) then
  begin
    Memo1.Lines.Add('Found the record where ETag = abc');
    Memo1.Lines.Add(CkXml__getXml(foundRec));

    // Let's examine the PartNumber for this record...
    Memo1.Lines.Add('Part number for Etag(abc) = ' + CkXml__getChildContent(foundRec,'PartNumber'));
    CkXml_Dispose(foundRec);
  end
else
  begin
    Memo1.Lines.Add('No record exists where ETag = abc.');
  end;

// Go back to the XML root..
CkXml_GetRoot2(xml);

CkXml_Dispose(xml);

end;