Sample code for 30+ languages & platforms
SQL Server

Access SOAP Body XML

Demonstrates how to access the SOAP body in XML.
<?xml version="1.0" encoding="utf-8" ?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
    <soapenv:Body>
        <tfd:TimbreFiscalDigital version="1.0" />
    </soapenv:Body>
</soapenv:Envelope>

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 @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 @xSoapEnvelope int
    EXEC @hr = sp_OACreate 'Chilkat.Xml', @xSoapEnvelope OUT
    IF @hr <> 0
    BEGIN
        PRINT 'Failed to create ActiveX component'
        RETURN
    END

    EXEC sp_OAMethod @xSoapEnvelope, 'LoadXmlFile', @success OUT, 'soapMessage.xml'
    IF @success <> 1
      BEGIN
        EXEC sp_OAGetProperty @xSoapEnvelope, 'LastErrorText', @sTmp0 OUT
        PRINT @sTmp0
        EXEC @hr = sp_OADestroy @xSoapEnvelope
        RETURN
      END

    -- The root node is the SOAP envelope, and in this particular case has a Tag of "soapenv:Envelope"

    EXEC sp_OAGetProperty @xSoapEnvelope, 'Tag', @sTmp0 OUT
    PRINT 'SOAP envelope tag: ' + @sTmp0

    -- The SOAP body (in this case) is a direct child of the SOAP envelope
    -- and has the tag "soapenv:Body"
    DECLARE @xSoapBody int
    EXEC sp_OAMethod @xSoapEnvelope, 'FindChild', @xSoapBody OUT, 'soapenv:Body'
    EXEC sp_OAGetProperty @xSoapEnvelope, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN

        PRINT 'No direct child having the tag "soapenv:Body" was found.'
        EXEC @hr = sp_OADestroy @xSoapEnvelope
        RETURN
      END

    -- The SOAP message body is the direct child of the SOAP envelope body:
    DECLARE @xMessageBody int
    EXEC sp_OAMethod @xSoapBody, 'FindChild', @xMessageBody OUT, 'TimbreFiscalDigital'
    EXEC sp_OAGetProperty @xSoapBody, 'LastMethodSuccess', @iTmp0 OUT
    IF @iTmp0 = 0
      BEGIN

        PRINT 'No direct child having the tag "TimbreFiscalDigital" was found.'
        EXEC @hr = sp_OADestroy @xSoapBody

        EXEC @hr = sp_OADestroy @xSoapEnvelope
        RETURN
      END

    -- If desired, get the XML of just the SOAP message body:
    DECLARE @soapMessageXml nvarchar(4000)
    EXEC sp_OAMethod @xSoapBody, 'GetXml', @soapMessageXml OUT

    EXEC @hr = sp_OADestroy @xMessageBody

    EXEC @hr = sp_OADestroy @xSoapBody

    -- --------------------------------------------------------------------------------
    -- Also see Chilkat's Online WSDL Code Generator
    -- to generate code and SOAP Request and Response XML for each operation in a WSDL.
    -- --------------------------------------------------------------------------------

    EXEC @hr = sp_OADestroy @xSoapEnvelope


END
GO