Как прочитать значение из XML в SQL Server

Я хочу прочитать значение в XML, возвращаемое службой WCF, которая вызывается хранимой процедурой. Код ниже возвращает ноль:

declare @xmlValue  varchar(1000)
declare @responseString varchar(100)
declare @idoc int

set @xmlValue = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">220</string>'

EXEC sp_xml_preparedocument @idoc OUTPUT, @xmlValue

SELECT *
FROM OPENXML (@idoc, '/*',3)
      WITH (string  varchar(100))

EXEC sp_xml_removedocument @idoc

1 ответ

Конечно - у XML есть пространство имен XML, которое вы игнорируете - вам нужно обратить на это внимание!

Я также рекомендовал бы использовать встроенную поддержку XQuery в SQL Server.

Попробуй это:

DECLARE @xmlvalue XML
SET @xmlValue = '<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">220</string>'

-- define the XML namespace
;WITH XMLNAMESPACES('http://schemas.microsoft.com/2003/10/Serialization/' AS ns)
SELECT
    @xmlValue.value('(ns:string)[1]', 'int')  -- and **use** the XML namespace!
Другие вопросы по тегам