Sample code for 30+ languages & platforms
SQL Server

Auto-Trim XML Content when Loading

See more XML Examples

This example explains the "autoTrim" argument that is passed to a method such as LoadXml2.

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

    -- If autoTrim is 1, then the content inside an leaf element is trimmed.
    -- For example:
    DECLARE @autoTrim int
    SELECT @autoTrim = 1
    EXEC sp_OAMethod @xml, 'LoadXml2', @success OUT, '<abc><xyz>  123   </xyz></abc>', @autoTrim
    EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
    PRINT @sTmp0

    -- Output is:
    -- (notice the SPACE chars before and after "xyz" are trimmed)

    -- <?xml version="1.0" encoding="utf-8" ?>
    -- <abc>
    --     <xyz>123</xyz>
    -- </abc>

    -- If autoTrim is 0, then the content inside leaf elements are not trimmed.
    SELECT @autoTrim = 0
    EXEC sp_OAMethod @xml, 'LoadXml2', @success OUT, '<abc><xyz>  123   </xyz></abc>', @autoTrim
    EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
    PRINT @sTmp0

    -- Output is:

    -- <?xml version="1.0" encoding="utf-8" ?>
    -- <abc>
    --     <xyz>  123   </xyz>
    -- </abc>

    -- --------------------------------------------------------------------
    -- The EmitCompact property controls whether XML is emitted indented (pretty-printed)
    -- or compact.  For example:

    -- Auto-trim + emit compact:
    SELECT @autoTrim = 1
    EXEC sp_OAMethod @xml, 'LoadXml2', @success OUT, '<abc><xyz>  123   </xyz></abc>', @autoTrim
    EXEC sp_OASetProperty @xml, 'EmitCompact', 1
    EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
    PRINT @sTmp0

    -- Output is:

    -- <?xml version="1.0" encoding="utf-8" ?>
    -- <abc><xyz>123</xyz></abc>

    -- No Auto-trim + emit compact:
    SELECT @autoTrim = 0
    EXEC sp_OAMethod @xml, 'LoadXml2', @success OUT, '<abc><xyz>  123   </xyz></abc>', @autoTrim
    EXEC sp_OASetProperty @xml, 'EmitCompact', 1
    EXEC sp_OAMethod @xml, 'GetXml', @sTmp0 OUT
    PRINT @sTmp0

    -- Output is:

    -- <?xml version="1.0" encoding="utf-8" ?>
    -- <abc><xyz>  123   </xyz></abc>

    EXEC @hr = sp_OADestroy @xml


END
GO