Получаю от web-сервиса ответ в виде xml. Хочу вытащить из него данные с помощью ms-sql.
Получается вот такой скрипт:
+ |
CREATE TABLE #Customers (
-- [document-control-number] varchar(36) primary key
[document-control-number] varchar(36)
,[partner-iln] varchar(13)
,[tracking-id] varchar(100)
,[document-type] varchar(10)
,[document-version] varchar(10)
,[document-standard] varchar(10)
,[document-test] varchar(10)
,[document-status] varchar(1)
,[document-number] varchar(36)
,[document-date] date
,[receive-date] date
);
DECLARE @docHandle int;
DECLARE @xmlDocument xml;
SET @xmlDocument = N'<RetRes xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.comarch.com/">
<Res>00000000</Res>
<Cnt>
<mailbox-response>
<document-info>
<partner-iln>4607070199991</partner-iln>
<tracking-id>{2dd5bd41-0a0a-0a0a-0a0a-0a0a0a0a0a0a}</tracking-id>
<document-type>ORDER</document-type>
<document-version>RU1</document-version>
<document-standard>XML</document-standard>
<document-test>P</document-test>
<document-status>N</document-status>
<document-number>709600158</document-number>
<document-date>2017-04-06</document-date>
<document-control-number>923901357</document-control-number>
<receive-date>2017-04-06 10:02:56</receive-date>
</document-info>
<document-info>
<partner-iln>4607070199991</partner-iln>
<tracking-id>{ad78bd41-0a0a-0a0a-0a0a-0a0a0a0a0a0a}</tracking-id>
<document-type>ORDER</document-type>
<document-version>RU1</document-version>
<document-standard>XML</document-standard>
<document-test>P</document-test>
<document-status>N</document-status>
<document-number>709600177</document-number>
<document-date>2017-04-06</document-date>
<document-control-number>923869795</document-control-number>
<receive-date>2017-04-06 09:02:15</receive-date>
</document-info>
</mailbox-response>
</Cnt>
</RetRes>';
EXEC sp_xml_preparedocument @docHandle OUTPUT, @xmlDocument,'<RetRes xmlns:aa="http://www.comarch.com/" />';
SELECT * FROM OPENXML(@docHandle, N'aa:RetRes',2) WITH (R char(8) 'aa:Res')
INSERT #Customers
SELECT *
FROM OPENXML(@docHandle, N'aa:RetRes/aa:Cnt/aa:mailbox-response/aa:document-info',2)
WITH #Customers
SELECT * FROM #Customers
EXEC sp_xml_removedocument @docHandle;
DROP TABLE #Customers
|
Тэг Res у меня получается вытащить, а вот во временную таблицу пишется две строки со значениями null. Подскажите, пожалуйста, как правильно сделать, что бы временная таблица заполнялась данными.
P.S.: подозреваю, что необходимо указать пространство имён на выбираемые тэги, но не знаю где и как.
P.P.S.: я могу заполнить врем.таблицу с помощью указания схемы, а не таблицы в WITH, но хотелось бы использовать такой вариант.