Delphi DLL
Delphi DLL
Get XML Attribute Value by Path
See more XML Examples
Demonstrates how to get an attribute value by path.Chilkat Delphi DLL Downloads
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
success: Boolean;
xml: HCkXml;
path: PWideChar;
attrValue: PWideChar;
i: Integer;
begin
success := False;
// The XML used in this example contains the following:
// This example will get the value of the "spay-neuter" attribute for each pig.
// <pig-rescue>
// <herd name="Cathy">
// <species name="pot belly pig">
// <animal>
// <name>Molly II</name>
// <birth>February, 1998</birth>
// <in-date>January, 2000</in-date>
// <from>Middle Ave.</from>
// <gender spay-neuter="yes">F</gender>
// <info>Molly came from a place where an old, ill man had too many animals.
// The animals were seldom fed and rats would eat the newborn piglets.
// When Molly was found at one week old, she was the only piglet of
// her siblings who did not get stepped on by a cow. She is a sweet,
// friendly pig who likes to hang out on Cathy's porch on the lounge
// pad.
// </info>
// </animal>
// <animal>
// <name>Nigel</name>
// <birth>June, 1991</birth>
// <in-date>August, 1991</in-date>
// <from>Breeder</from>
// <gender spay-neuter="no">M</gender>
// <info>
// Nigel was the first pig and the reason for the rescue in the
// first place. He is 13 now and doing well, but takes a number
// of medications, as you can see below.
// </info>
// </animal>
// </species>
// </herd>
// </pig-rescue>
xml := CkXml_Create();
success := CkXml_LoadXmlFile(xml,'qa_data/xml/twoPigs.xml');
// Use the ChilkatPath method to return the value of a particular attribute at a given path.
// A path ending with "(attributeName)" will return the value for the given attribute.
path := 'herd|species|animal[0]|gender|(spay-neuter)';
attrValue := CkXml__chilkatPath(xml,path);
Memo1.Lines.Add('1st pig spay-neuter: ' + attrValue);
path := 'herd|species|animal[1]|gender|(spay-neuter)';
attrValue := CkXml__chilkatPath(xml,path);
Memo1.Lines.Add('2nd pig spay-neuter: ' + attrValue);
// We could also do it like this:
path := 'herd|species|animal[i]|gender|(spay-neuter)';
i := 0;
while i < CkXml_NumChildrenAt(xml,'herd|species') do
begin
CkXml_putI(xml,i);
Memo1.Lines.Add('spay-neuter for pig number ' + IntToStr(i + 1) + ': ' + CkXml__chilkatPath(xml,path));
i := i + 1;
end;
CkXml_Dispose(xml);
end;