SQL Server
SQL Server
Demonstrates the ChilkatPath XML Method
Demonstrates how to use the ChilkatPath method. This example uses the XML sample file pigs.xml. The pigs.xml file contains this content:
Chilkat SQL Server Downloads
-- Important: See this note about string length limitations for strings returned by sp_OAMethod calls.
--
CREATE PROCEDURE ChilkatSample
AS
BEGIN
DECLARE @hr int
DECLARE @iTmp0 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
EXEC sp_OAMethod @xml, 'LoadXmlFile', @success OUT, 'qa_data/xml/pigs.xml'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @xml, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @xml
RETURN
END
-- Get the content of the "species" node for the 1st animal:
DECLARE @result nvarchar(4000)
EXEC sp_OAMethod @xml, 'ChilkatPath', @result OUT, 'animal|species|*'
-- Output should be "pot belly pig"
PRINT @result
-- Get the content of the "type" node for the 2nd animal:
-- Indexing begins at 0. Therefore, the 2nd direct child having
-- the tag "animal" is at index 1
EXEC sp_OAMethod @xml, 'ChilkatPath', @result OUT, 'animal[1]|type|*'
-- Output should be "House Pig"
PRINT @result
-- Find the pig having the name "Nigel" and display the
-- birth date. To do this, we'll navigate to the node having
-- tag="name" with the exact content "Nigel", then navigate up,
-- and finally navigate back down to the "birth" node:
EXEC sp_OAMethod @xml, 'ChilkatPath', @result OUT, '/C/name,Nigel|..|birth|*'
-- Output should be "June, 1991"
PRINT @result
-- Navigate to the 1st animal's picture and print the filename,
-- description, and caption.
-- The "$" updates the caller's internal pointer to reference
-- the node that is the result of evaluating the path.
-- An empty string is returned for success, and a NULL/nil/0
-- pointer (reference) is returned on failure.
EXEC sp_OAMethod @xml, 'ChilkatPath', @result OUT, 'animal|picture|$'
EXEC sp_OAGetProperty @xml, 'LastMethodSuccess', @iTmp0 OUT
IF @iTmp0 <> 1
BEGIN
PRINT 'Failed to navigate to animal|picture.'
EXEC @hr = sp_OADestroy @xml
RETURN
END
-- Display the contents of the file/description/caption child nodes
PRINT 'Picture Info:'
EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'file'
PRINT @sTmp0
EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'description'
PRINT @sTmp0
EXEC sp_OAMethod @xml, 'GetChildContent', @sTmp0 OUT, 'caption'
PRINT @sTmp0
-- Return back to the root of the XML document:
EXEC sp_OAMethod @xml, 'GetRoot2', NULL
-- Display the value of the "spay-neuter" attribute of the 1st animal:
PRINT '----'
EXEC sp_OAMethod @xml, 'ChilkatPath', @result OUT, 'animal|gender|(spay-neuter)'
PRINT @result
EXEC @hr = sp_OADestroy @xml
END
GO