Sample code for 30+ languages & platforms
DataFlex

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 DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vXml
    Handle hoXml
    Boolean iFound
    String sTagPath
    String sTemp1

    Move False To iSuccess

    Get Create (RefClass(cComChilkatXml)) To hoXml
    If (Not(IsComObjectCreated(hoXml))) Begin
        Send CreateComObject of hoXml
    End

    // Load some XML:
    Get ComLoadXml Of hoXml "<a><bbb><ccc><ddd>1</ddd><ddd><z>zzz</z></ddd><ddd>3</ddd></ccc></bbb></a>" To iSuccess

    Get ComGetXml Of hoXml To sTemp1
    Showln sTemp1

    // 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:
    Get pvComObject of hoXml to vXml
    Get ComSearchForTag2 Of hoXml vXml "z" To iFound
    If (iFound = True) Begin
        // We found a node having the tag "z".
        // The TagPath property tells us the location in the document.
        Get ComTagPath Of hoXml To sTagPath
        Showln sTagPath

        // 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.
        Send ComGetRoot2 To hoXml
        Get ComTag Of hoXml To sTemp1
        Showln sTemp1
        // The root tag is "a".

        // Follow the tagPath to the "z" node:
        Get ComFindChild2 Of hoXml sTagPath To iFound
        Get ComTag Of hoXml To sTemp1
        Showln "found = " iFound ", tag = " sTemp1
        // We are now at "z".

    End



End_Procedure