Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Delphi DLL) Demonstrate XML SearchForTag2Demonstrates how to use SearchForTag2.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder, Xml; ... procedure TForm1.Button1Click(Sender: TObject); var xml: HCkXml; success: Boolean; i: Integer; xmlSearch: HCkXml; afterPtr: HCkXml; pTemp: HCkXml; sbState: HCkStringBuilder; begin xml := CkXml_Create(); // 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 := CkXml_LoadXml(xml,'<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 := CkXml_GetRoot(xml); afterPtr := CkXml_GetRoot(xml); // Alway begin the search from the root. while CkXml_SearchForTag2(xmlSearch,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) + ': ' + CkXml__content(xmlSearch)); pTemp := afterPtr; afterPtr := xmlSearch; CkXml_GetRoot2(pTemp); xmlSearch := pTemp; end; CkXml_Dispose(xmlSearch); CkXml_Dispose(afterPtr); Memo1.Lines.Add('----'); // A better way: sbState := CkStringBuilder_Create(); i := 0; while CkXml_NextInTraversal2(xml,sbState) <> False do begin if (CkXml_TagEquals(xml,'testchild1') = True) then begin Memo1.Lines.Add(IntToStr(i) + ': ' + CkXml__content(xml)); i := i + 1; end; end; CkXml_GetRoot2(xml); CkXml_Dispose(xml); CkStringBuilder_Dispose(sbState); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.