Sample code for 30+ languages & platforms
SQL Server

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 SQL Server Downloads

SQL Server
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
    DECLARE @hr int
    -- Important: Do not use nvarchar(max).  See the warning about using nvarchar(max).
    DECLARE @sTmp0 nvarchar(4000)
    DECLARE @success int
    SELECT @success = 0

    DECLARE @xml int
    EXEC @hr = sp_OACreate 'Chilkat.Xml', @xml OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    -- Load some XML:
    EXEC sp_OAMethod @xml, 'LoadXml', @success OUT, '<a><bbb><ccc><ddd>1</ddd><ddd><z>zzz</z></ddd><ddd>3</ddd></ccc></bbb></a>'

    EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
    PRINT @sTmp0

    -- 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:
    DECLARE @found int
    EXEC sp_OAMethod @xml, 'SearchForTag2', @found OUT, @xml, 'z'
    IF @found = 1
      BEGIN
        -- We found a node having the tag "z".
        -- The TagPath property tells us the location in the document.
        DECLARE @tagPath nvarchar(4000)
        EXEC sp_OAGetProperty @xml, 'TagPath', @tagPath OUT

        PRINT @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.
        EXEC sp_OAMethod @xml, 'GetRoot2', NULL
        EXEC sp_OAGetProperty @xml, 'Tag', @sTmp0 OUT
        PRINT @sTmp0
        -- The root tag is "a".

        -- Follow the tagPath to the "z" node:
        EXEC sp_OAMethod @xml, 'FindChild2', @found OUT, @tagPath


        EXEC sp_OAGetProperty @xml, 'Tag', @sTmp0 OUT
        PRINT 'found = ' + @found + ', tag = ' + @sTmp0
        -- We are now at "z".

      END

    EXEC @hr = sp_OADestroy @xml


END
GO