Я пытаюсь получить текст «Ответ» из ответа SOAP в SQL Server, но не могу использовать soap: Envelope из-за ошибки синтаксического анализа из SQL Server.
Ошибка синтаксического анализа XML: ссылка на необъявленный префикс пространства имен: 'soap'.
Мой XML-ответ выглядит следующим образом и содержится в nvarchar с именем @xmlOut:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<Method1Response xmlns="http://tempuri.org/">
<Method1Result><Interface><Col1>#result#</Col1><Col2>info</Col2><Col3>Record is invalid.</Col3><Col4></Col4></Interface></Method1Result>
</Method1Response>
</soap:Body>
</soap:Envelope>
Я пытаюсь получить Method1Result в nvarchar, но я действительно борюсь с чтением этого XML.
declare @xDoc as xml
set @xDoc = cast(@xmlOut as xml)
declare @hdoc int
exec sp_xml_preparedocument @hdoc OUTPUT, @xDoc
select *
from
( select *
from openxml(@hdoc, '/soap:Envelope/soap:Body/MethodResponse', 1)
with (MethodResult nvarchar(max))
) as x
exec sp_xml_removedocument @hdoc
Вот как я обычно читаю свои переменные XML в SQL, но как только я пытаюсь прочитать soap: Envelope, я получаю эту ошибку:
Ошибка синтаксического анализа XML: ссылка на необъявленный префикс пространства имен: 'soap'.