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

Откуда:
Сообщений: 168
Есть скрипт с формированием XML
DECLARE	 @Head	XML
	,@Body	XML
	,@ID		Int

	;WITH XMLNAMESPACES (DEFAULT 'http://www..../')
	SELECT	@Body	= (SELECT '123456' AS IDN FOR XML Path('Info'),Type)
	EXEC	@ID	= ProcedureName	 'TEST', @Head	OUT, @Body	OUT, 1
select @body


выдает:
<InfoResponse xmlns="http://www....ru/">
<InfoResult xmlns:xsi="http://www..." xsi:nil="true" />
<Name>IVANOV IVAN IVANOVICI</Name>
<Full />
<Region xmlns:xsi="http://www....." xsi:nil="true" />
<Address />
</InfoResponse>

скажите пожалуйта, как вытащить данные из этого xml, чтобы потом внести в таблицу
29 июл 13, 16:40    [14633142]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
gang
Member

Откуда:
Сообщений: 1394
Len4ick,

Написать соответствующий запрос(ы) на XQuery и применить его(их) к полю или переменной типа XML через соответствующий метод.
29 июл 13, 17:27    [14633449]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
Len4ick
Member

Откуда:
Сообщений: 168
пишу так
select @Body.value('(InfoResponse/InfoResult/text())[1]','varchar(50)')

выдает null
29 июл 13, 17:30    [14633473]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
Гость_89
Guest
SELECT C.X.value('Name[1]','VarChar(36)')
FROM @Body.nodes('/InfoResponse[1]')C(X)

да и так не работает(
29 июл 13, 17:35    [14633497]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
qwerty112
Guest
Len4ick
пишу так
select @Body.value('(InfoResponse/InfoResult/text())[1]','varchar(50)')

выдает null

так он у тебя и есть НУЛЛ
<InfoResult xmlns:xsi="http://www..." xsi:nil="true" />

запрос должен быть с ;WITH XMLNAMESPACES
и, если, ХМЛ из сабжевого поста - реально такой (а НЕ, это правака реального хмл-я, "кривыми руками"),
то он не валидный
29 июл 13, 17:42    [14633551]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
Len4ick
Member

Откуда:
Сообщений: 168
qwerty112,
реально такой
29 июл 13, 18:10    [14633700]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
qwerty112
Guest
Len4ick
qwerty112,
реально такой

тем хуже для тебя

зы
я про вот эти "приколы", вдруг что ...
автор
xmlns="http://www....ru/"
xmlns:xsi="http://www..."
xmlns:xsi="http://www....."
29 июл 13, 18:16    [14633735]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
DECLARE @Body	XML

SET 	@Body = '<InfoResponse xmlns="http://www....ru/">
<InfoResult xmlns:xsi="http://www..." xsi:nil="true" />
<Name>IVANOV IVAN IVANOVICI</Name>
<Full />
<Region xmlns:xsi="http://www....." xsi:nil="true" />
<Address />
</InfoResponse>'

SELECT @Body

SELECT 
 X.value('*:InfoResult[1]','VarChar(250)')
,X.value('*:Name[1]','VarChar(250)')
,X.value('*:Full[1]','VarChar(250)')
,X.value('*:Region[1]','VarChar(250)')
,X.value('*:Address[1]','VarChar(250)')
FROM @Body.nodes('/*:InfoResponse') C(X)
30 июл 13, 08:46    [14635420]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
Len4ick
Member

Откуда:
Сообщений: 168
LexusR,
спасибо, все работает. А что означает *:
30 июл 13, 09:40    [14635619]     Ответить | Цитировать Сообщить модератору
 Re: вывести данные из xml  [new]
LexusR
Member

Откуда: Novosibirsk
Сообщений: 1873
для любого namespace
30 июл 13, 09:41    [14635623]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить