Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

Xml TagPath Property Explained

See more XML Examples

Demonstrates and explains the TagPath property.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
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.