Sample code for 30+ languages & platforms
SQL Server

Xml TagPath Property Explained

See more XML Examples

Demonstrates and explains the TagPath property.

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