powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как извлечь все значения аттрибутов из XML
5 сообщений из 5, страница 1 из 1
Как извлечь все значения аттрибутов из XML
    #37538892
Anatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Получаю Select-ом xml строку.
Необходимо извлечь все значения атрибутов "text" из xml строки

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
DECLARE @Convers XML 
SET @Convers = '<object><ConversationList><Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:31Z" text="First text" /><Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:45Z" text="Second text" /></ConversationList></object>'

IF @Convers.exist('/object/ConversationList') =  1  
	BEGIN 
		SELECT @Convers.value('(/object/ConversationList/Conversation/@text)[3]', 'nvarchar(max)') AS conv 
	END 
Т.е. необходимо получить две строки:
First text
Second text
...
Рейтинг: 0 / 0
Как извлечь все значения аттрибутов из XML
    #37538954
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select 
	T.c.value('.','varchar(2000)') as [Text]
from @Convers.nodes('//Conversation/@text') T(c)
...
Рейтинг: 0 / 0
Как извлечь все значения аттрибутов из XML
    #37539133
Anatoliy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за помощь.
Атрибуты извлекаются. Но конечная цель оказалась от этого не ближе.
Если разрешите, я сформулирую конечную задачу

необходимо из строки
'<object>
<ConversationList>
<Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:31Z" text="First" />
<Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:45Z" text="Second" />
<Conversation userid="10" username="Anatoliy" date="2011-11-22 11:07:27Z" text="Third" />
</ConversationList>
</object>'



создать одну строку, где даты conversation соединены через пробел с самим текстом, а каждый conversation разделен переносом строки.
Т.е. в результате требуется получить строку следующего вида:

2011-11-22 10:04:31 First
2011-11-22 10:04:45 Second
2011-11-22 11:07:27 Third


Мне на ум не приходит ничего более оригинального, чем записывать результаты двух запросов во временную таблицу, а потом бежать по ней курсором и считывать значения в результирующую строку...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DECLARE @Convers XML
SET @Convers = '<object>
	<ConversationList>
		<Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:31Z" text="First" />
		<Conversation userid="10" username="Anatoliy" date="2011-11-22 10:04:45Z" text="Second" />
		<Conversation userid="10" username="Anatoliy" date="2011-11-22 11:07:27Z" text="Third" />
	</ConversationList>
</object>'

-- получаю отдельно наборы аттрибутов date .... 
SELECT l.t.value('.','varchar(MAX)')
FROM @Convers.nodes('//Conversation/@text') l(t)

-- и отдельно наборы аттрибутов text
SELECT l.d.value('.','varchar(MAX)')  
FROM @Convers.nodes('//Conversation/@date') l(d) 

/*
необходимо же получить строку вида:
2011-11-22 10:04:31 First
2011-11-22 10:04:45 Second
2011-11-22 11:07:27 Third
*/
...
Рейтинг: 0 / 0
Как извлечь все значения аттрибутов из XML
    #37539963
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[SRC sql]SELECT Replace(l.t.value('./@date','varchar(MAX)'), 'Z', '') + ' ' + l.t.value('./@text','varchar(MAX)')
FROM @Convers.nodes('//Conversation') l(t)[/SRC]
...
Рейтинг: 0 / 0
Как извлечь все значения аттрибутов из XML
    #37539966
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
SELECT Replace(l.t.value('./@date','varchar(MAX)'), 'Z', '') + ' ' + l.t.value('./@text','varchar(MAX)')
FROM @Convers.nodes('//Conversation') l(t)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как извлечь все значения аттрибутов из XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]