Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Извлечь данные их XML  [new]
jango77
Member

Откуда:
Сообщений: 41
Приветствую

Подскажите пож, что не так? Возвращает NULL

DECLARE @xml xml
SET @xml = '
<pre>code: 93123
codeID: 3320
from: 20033
to: 39566
capacity: 2000000
operator: Мегафон
operatorID: 293243261
region: Санкт-Петербург
regionID: 185232
</pre>'

DECLARE @XmlDocumentHandle int
EXEC sp_xml_preparedocument @XmlDocumentHandle out, @xml

SELECT REGION
FROM OPENXML(@XmlDocumentHandle, '/pre',1) 
WITH (
         REGION  varchar(50) '@region'
      )

EXEC sp_xml_removedocument @XmlDocumentHandle
8 авг 18, 10:22    [21633926]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь данные их XML  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
jango77,

это новый формат xml такой?
8 авг 18, 10:27    [21633941]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь данные их XML  [new]
jango77
Member

Откуда:
Сообщений: 41
та знаю что не верный
пробовал так привести к верному формату

DECLARE @txt nvarchar(1000)
DECLARE @xml xml
SET @txt = N'
<pre>code: 93123
codeID: 3320
from: 20033
to: 39566
capacity: 2000000
operator: Мегафон
operatorID: 293243261
region: Санкт-Петербург
regionID: 185232
</pre>'

SET @xml = CAST(REPLACE(@txt, ': ', '=') as xml)
8 авг 18, 10:29    [21633944]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь данные их XML  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
jango77,

<pre code="93123"
codeID= "3320"
from= "20033"
to= "39566"
capacity= "2000000"
operator= "Мегафон"
operatorID= "293243261"
region= "Санкт-Петербург"
regionID= "185232"
/>'
8 авг 18, 10:45    [21633983]     Ответить | Цитировать Сообщить модератору
 Re: Извлечь данные их XML  [new]
jango77
Member

Откуда:
Сообщений: 41
TaPaK , Спасибо, сработало
Вот работающий код

DECLARE @txt nvarchar(1000)
DECLARE @xml xml
SET @txt = N'
<pre>code: 93123
codeID: 3320
from: 20033
to: 39566
capacity: 2000000
operator: Мегафон
operatorID: 293243261
region: Санкт-Петербург
regionID: 185232
</pre>'


SET @xml = CAST(
                      STUFF(
			 REPLACE(
			   REPLACE(
			     REPLACE(
			       REPLACE(@txt, ': ', '="'), 
			     CHAR(10), '" '),
			   '<pre>', '<pre '), 
			 '</pre>', '/>'), 
		       1, 1, '')    
		     as xml)

				 
DECLARE @XmlDocumentHandle int
EXEC sp_xml_preparedocument @XmlDocumentHandle out, @xml

SELECT REGION
FROM OPENXML(@XmlDocumentHandle, '/pre',2) 
WITH (
         REGION  varchar(50) '@region'
      )

EXEC sp_xml_removedocument @XmlDocumentHandle
8 авг 18, 11:09    [21634030]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить