Sample code for 30+ languages & platforms
Delphi DLL

Xml TagPath Property Explained

See more XML Examples

Demonstrates and explains the TagPath property.

Note: The TagPath property was introduced in Chilkat v9.5.0.77

Chilkat Delphi DLL Downloads

Delphi DLL
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;
found: Boolean;
tagPath: PWideChar;

begin
success := False;

xml := CkXml_Create();

// Load some XML:
success := CkXml_LoadXml(xml,'<a><bbb><ccc><ddd>1</ddd><ddd><z>zzz</z></ddd><ddd>3</ddd></ccc></bbb></a>');

Memo1.Lines.Add(CkXml__getXml(xml));

// 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 := CkXml_SearchForTag2(xml,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 := CkXml__tagPath(xml);
    Memo1.Lines.Add(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.
    CkXml_GetRoot2(xml);
    Memo1.Lines.Add(CkXml__tag(xml));
    // The root tag is "a".

    // Follow the tagPath to the "z" node:
    found := CkXml_FindChild2(xml,tagPath);
    Memo1.Lines.Add('found = ' + IntToStr(Ord(found)) + ', tag = ' + CkXml__tag(xml));
    // We are now at "z".

  end;

CkXml_Dispose(xml);

end;