Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
Xml TagPath Property Explained
See more XML Examples
Demonstrates and explains the TagPath property.Chilkat Pascal (Lazarus/Delphi) Downloads
program ChilkatDemo;
// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
SysUtils,
CkDllLoader,
Chilkat.Xml;
// ---------------------------------------------------------------------------
procedure RunDemo;
var
success: Boolean;
xml: TXml;
found: Boolean;
tagPath: string;
begin
success := False;
xml := TXml.Create;
// Load some XML:
success := xml.LoadXml('<a><bbb><ccc><ddd>1</ddd><ddd><z>zzz</z></ddd><ddd>3</ddd></ccc></bbb></a>');
WriteLn(xml.GetXml());
// This is what we have:
// <?xml version="1.0" encoding="utf-8"?>
// <a>
// <bbb>
// <ccc>
// <ddd>1</ddd>
// <ddd>
// <z>zzz</z>
// </ddd>
// <ddd>3</ddd>
// </ccc>
// </bbb>
// </a>
// The TagPath property is read-only property that returns the unique path to the
// node from the document root.
// For example:
found := xml.SearchForTag2(xml,'z');
if (found = True) then
begin
// We found a node having the tag "z".
// The TagPath property tells us the location in the document.
tagPath := xml.TagPath;
WriteLn(tagPath);
// The tagPath is bbb|ccc|ddd[1]|z
// If we to back to the document root, we can get to the given node via the tagPath.
xml.GetRoot2();
WriteLn(xml.Tag);
// The root tag is "a".
// Follow the tagPath to the "z" node:
found := xml.FindChild2(tagPath);
WriteLn('found = ' + found + ', tag = ' + xml.Tag);
// We are now at "z".
end;
xml.Free;
end;
// ---------------------------------------------------------------------------
begin
try
RunDemo;
except
on E: Exception do
WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
end;
WriteLn;
{$IFDEF MSWINDOWS}
WriteLn('Press Enter to exit...');
ReadLn;
{$ENDIF}
end.