Delphi ActiveX
Delphi ActiveX
Demonstrate XML SearchForTag2
Demonstrates how to use SearchForTag2.Chilkat Delphi ActiveX Downloads
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;
...
procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
xml: TChilkatXml;
i: Integer;
xmlSearch: IChilkatXml;
afterPtr: IChilkatXml;
pTemp: IChilkatXml;
sbState: TChilkatStringBuilder;
begin
success := 0;
xml := TChilkatXml.Create(Self);
// Load the following XML:
// <Test>
// <testchild1>
// test
// </testchild1>
// <testchild1>
// test1
// </testchild1>
// <testchild1>
// test2
// </testchild1>
// <testchild1>
// test3
// </testchild1>
// <testchild1>
// test4
// </testchild1>
// <testchild1>
// test5
// </testchild1>
// <testchild1>
// test6
// </testchild1>
// </Test>
success := xml.LoadXml('<Test><testchild1>test</testchild1><testchild1>test1</testchild1><testchild1>test2</testchild1><testchild1>test3</testchild1><testchild1>test4</testchild1><testchild1>test5</testchild1><testchild1>test6</testchild1></Test>');
i := 0;
xmlSearch := xml.GetRoot();
afterPtr := xml.GetRoot();
// Alway begin the search from the root.
while xmlSearch.SearchForTag2(afterPtr,'testchild1') do
begin
// If successful, xmlSearch now points to the found element.
i := i + 1;
// Set afterPtr = xmlSearch (so we find the next match after the one we just found)
// Rest xmlSearch to the root of the XML tree to be searched.
Memo1.Lines.Add(IntToStr(i) + ': ' + xmlSearch.Content);
pTemp := afterPtr;
afterPtr := xmlSearch;
pTemp.GetRoot2();
xmlSearch := pTemp;
end;
Memo1.Lines.Add('----');
// A better way:
sbState := TChilkatStringBuilder.Create(Self);
i := 0;
while xml.NextInTraversal2(sbState.ControlInterface) <> 0 do
begin
if (xml.TagEquals('testchild1') = 1) then
begin
Memo1.Lines.Add(IntToStr(i) + ': ' + xml.Content);
i := i + 1;
end;
end;
xml.GetRoot2();
end;