powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Собрать XML по пути
2 сообщений из 2, страница 1 из 1
Собрать XML по пути
    #39625563
Cammomile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет коллеги.

Подскажите, у нас есть какие-то механизмы формирования XML по строке пути?


На входе, например, две строки

'Товары/Фрукты/Яблоки/Цена 300'
'Товары/Фрукты/Категория А-20'

А на выходе должной выйти

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Товары>
  <Фрукты>
    <Категория>А-20</Категория>
    <Яблоки>
        <Цена>300</Цена>
    </Яблоки>
  </Фрукты>
</Товары>
...
Рейтинг: 0 / 0
Собрать XML по пути
    #39625668
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cammomile,

навсякий, такое "народное творчество", в принципе, задачу решает :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
declare @t table (s varchar(100))
declare @SQL nvarchar(max)
declare @xml xml 

--
insert into @t
select 'Товары/Фрукты/Яблоки/Цена=300' union all
select 'Товары/Фрукты/Категория=А-20' union all
select 'Товары/@xz=1234567'

;with cte as (
	select
		pth	=left(s, charindex('=',s,1)-1)
		,data	=right(s, len(s)-charindex('=',s,1))
		,lvl	=len(left(s, charindex('=',s,1)-1))-len(replace(left(s, charindex('=',s,1)-1),'/','')) 
	from @t)

select @SQL=(select ''''+data+''' as ['+pth+'], ' from cte order by lvl for xml path(''))

--print @SQL
set @SQL =N'set @xml=(select '+left(@SQL,len(@SQL)-1)+' for xml path(''''),elements)' 
--print @SQL

--
exec sp_executesql @SQL, N'@xml xml out', @xml=@xml out 

select @xml  


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
<Товары xz="1234567">
  <Фрукты>
    <Категория>А-20</Категория>
    <Яблоки>
      <Цена>300</Цена>
    </Яблоки>
  </Фрукты>
</Товары>
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Собрать XML по пути
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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