Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Запрос к xml, с указанным пространством имен.

$
0
0
Получаю от 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, но хотелось бы использовать такой вариант.

Viewing all articles
Browse latest Browse all 7251

Trending Articles