SQL Server
SQL Server
XML Sort by Tag
See more XML Examples
Demonstrates the SortByTag method.The input XML, available at http://www.chilkatsoft.com/data/fruitSort1.xml, is this:
<root>
<fruits>
<apple>
<fuji>blah</fuji>
<gala>blah</gala>
<grannySmith>blah</grannySmith>
<honeycrisp>blah</honeycrisp>
<mcIntosh>blah</mcIntosh>
</apple>
<banana>blah</banana>
<blackberry>blah</blackberry>
<blueberry>blah</blueberry>
<orange>blah</orange>
<pear>blah</pear>
</fruits>
</root>
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
-- 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
DECLARE @xSortRoot int
-- The sample input XML is available at http://www.chilkatsoft.com/data/fruitSort1.xml
EXEC sp_OAMethod @xml, 'LoadXmlFile', @success OUT, 'fruitSort1.xml'
IF @success <> 1
BEGIN
EXEC sp_OAGetProperty @xml, 'LastErrorText', @sTmp0 OUT
PRINT @sTmp0
EXEC @hr = sp_OADestroy @xml
RETURN
END
-- Sort the direct children under the "fruits" node by tag:
EXEC sp_OAMethod @xml, 'FindChild', @xSortRoot OUT, 'fruits'
-- Sort in ascending order.
DECLARE @bAscending int
SELECT @bAscending = 1
EXEC sp_OAMethod @xSortRoot, 'SortByTag', NULL, @bAscending
-- Show the result:
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
-- <root>
-- <fruits>
-- <apple>
-- <grannySmith>blah</grannySmith>
-- <gala>blah</gala>
-- <fuji>blah</fuji>
-- <mcIntosh>blah</mcIntosh>
-- <honeycrisp>blah</honeycrisp>
-- </apple>
-- <banana>blah</banana>
-- <blackberry>blah</blackberry>
-- <blueberry>blah</blueberry>
-- <orange>blah</orange>
-- <pear>blah</pear>
-- </fruits>
-- </root>
-- Sort the direct children under the "apple" node:
EXEC sp_OAMethod @xSortRoot, 'FindChild2', @success OUT, 'apple'
EXEC sp_OAMethod @xSortRoot, 'SortByTag', NULL, @bAscending
EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
PRINT @sTmp0
-- <root>
-- <fruits>
-- <apple>
-- <fuji>blah</fuji>
-- <gala>blah</gala>
-- <grannySmith>blah</grannySmith>
-- <honeycrisp>blah</honeycrisp>
-- <mcIntosh>blah</mcIntosh>
-- </apple>
-- <banana>blah</banana>
-- <blackberry>blah</blackberry>
-- <blueberry>blah</blueberry>
-- <orange>blah</orange>
-- <pear>blah</pear>
-- </fruits>
-- </root>
EXEC @hr = sp_OADestroy @xSortRoot
EXEC @hr = sp_OADestroy @xml
END
GO