powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Требуется сформировать XML-документ, не знаю, как
13 сообщений из 13, страница 1 из 1
Требуется сформировать XML-документ, не знаю, как
    #40110278
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дано: таблица #t1. В ней два столбца: [Паспорт_серия] и [Паспорт_номер]

Из неё надо получить XML типа:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?xml version=1.0">
<ROOT>
    <DOC_REQUISITIES DOC_DATE="2021-11-09" DOC_TIME="12:48:00">
    <CLIENTS DocDate="2021-11-09" FirmID="0676899">
        <CLIENT attribut="1">
            <CLIENT_INFO1 attribut="1">
                    <CLIENT_INFO2 attribut3="54">
                        <CLIENT_INFO3 attribut4="128"/>
                    </CLIENT_INFO2>
            </CLIENT_INFO1>
            <CLIENT_INFO4 attribut="1" attribut2="1" >
                    <CLIENT_Passport attribut3="[Паспорт_серия] + ' ' + [Паспорт_номер]"/>
            </CLIENT_INFO4>
        </CLIENT>
    </CLIENTS>
</ROOT>



Вот и вопрос, как???? Откуда значения атрибутов брать, я в курсе. Но как саму эту структуру строить??? При этом есть у меня подозрения, что значения одного из атрибутов - это номер строки выборки (Row_Number)...
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110284
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

у вас не хватает входных данных.

или значения узлов client_info у вас всегда будут статичные и будет меняться только client_passport?
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110297
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
declare @t table (ser varchar(20), num varchar(20));
insert into @t values ('5000', '123456'), ('6000', '654321');

select 
     '20211109' AS [DOC_REQUISITES/@DOC_DATE],
     '12:48:00' AS [DOC_REQUISITES/@DOC_TIME],
     '20211109' AS [CLIENTS/@DocDate],
     '0676899' AS [CLIENTS/@FirmID],
     1 as [CLIENTS/CLIENT/@attribut],
     1 as [CLIENTS/CLIENT/CLIENT_INFO1/@attribut],
     54 AS [CLIENTS/CLIENT/CLIENT_INFO1/CLIENT_INFO2/@attribut3],
     128 AS [CLIENTS/CLIENT/CLIENT_INFO1/CLIENT_INFO2/CLIENT_INFO3/@attribut],
     1 AS [CLIENTS/CLIENT/CLIENT_INFO4/@attribut],
     1 AS [CLIENTS/CLIENT/CLIENT_INFO4/@attribut2],
     [ser] + ' ' + [num] AS [CLIENTS/CLIENT/CLIENT_INFO4/CLIENT_Passport/@attribut3]
from @t
for xml path (''), root('ROOT')



образно так, но я уже вас предупредил что непонятно какие у вас данные статичные а какие нет.
таблица с двумя колонками никогда не даст вам информации по остальным данным присутствующим в вашем примере xml
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110310
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,
возможно так (все кроме номера паспорта - статические, там уж сами решайте и дорабатывайте)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
declare @clients table  (nomer varchar(10), seria varchar(10))
insert into @clients(nomer, seria) values
('N1', 'S1'),
('N2', 'S2')

select 
	(select '@DOC_DATE' = convert(varchar(10), getdate(), 120), '@DOC_TIME' = convert(varchar(8), cast(getdate() as time)) for xml path ('DOC_REQUISITIES'), type)
	,(select '@DocDate' = convert(varchar(10), getdate(), 120)
		,'@FirmID'='0676899'
		,(select '@attribut' = row_number() over (order by c.seria, c.nomer)
				,(select '@attribut'=1
					,(select '@attribut3'=54
						,(select '@attribut4' = 128 for xml path('CLIENT_INFO3'), type)
					for xml path ('CLIENT_INFO2'), type)
				for xml path ('CLIENT_INFO1'), type)
				,(select '@attribut3' = concat(c.seria, ' ', c.nomer) for xml path('CLIENT_Passport'), root('CLIENT_INFO4'), type)
			from @clients c 
			for xml path ('CLIENT'), type
		) for xml path ('CLIENTS'), type)
for xml path ('ROOT')
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110328
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! Благодарю всех! Сейчас буду смотреть.
А то собирался EXPLICIT-ом делать.

По поводу статичности - всё, кроме данных паспортов - константы, кроме единственного RowNumber-a.
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110405
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А эту строку как добавить:

Код: xml
1.
<?xml version=1.0">
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40110431
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi
А эту строку как добавить:

Код: xml
1.
<?xml version=1.0">


конвертируйте xml в строку и добавляйте руками

ЗЫЖ а оно Вам надо?
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40115931
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HandKot
DaniilSeryi
А эту строку как добавить:

Код: xml
1.
<?xml version=1.0">


конвертируйте xml в строку и добавляйте руками

ЗЫЖ а оно Вам надо?


Оно мне надо, увы. Без этой строки Excel файл не жрёт. Но если xml конвертировать в строку и добавить <?xml version=1.0">, то потом Excel всё равно файл не жрёт - ломается на 2021 символе. Переводы строки ему ещё нужны, что ли?
Или как-то неправильно выгружаю?
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40115954
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi
HandKot
пропущено...

конвертируйте xml в строку и добавляйте руками

ЗЫЖ а оно Вам надо?


Оно мне надо, увы. Без этой строки Excel файл не жрёт. Но если xml конвертировать в строку и добавить <?xml version=1.0">, то потом Excel всё равно файл не жрёт - ломается на 2021 символе. Переводы строки ему ещё нужны, что ли?
Или как-то неправильно выгружаю?


у вас декларация неправильная:

она должна закрываться тоже знаком "?"

<?xml version="1.0" ?>
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40120624
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, а не напомните, как в tsql обычный varchar(max) а-ля windows-1251 в utf-8 превратить?
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40120630
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryi,

если сервер 2019+, то можно использовать COLLATE.

ps хотя нет, хранить можно UTF-8, а вот насчет преобразования - врят ли.

Одна из задач SSIS может выполнить преобразование.
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40120653
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
DaniilSeryi,

если сервер 2019+, то можно использовать COLLATE.

ps хотя нет, хранить можно UTF-8, а вот насчет преобразования - врят ли.

Одна из задач SSIS может выполнить преобразование.


Если оно "хранит", cast( ПолеUTF8 as varbinary(max) ) может обеспечить желаемое.
Но надо проверять...
...
Рейтинг: 0 / 0
Требуется сформировать XML-документ, не знаю, как
    #40120666
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сервер не 2019. Впрочем, не важно - конвертацию сделал на VBA.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Требуется сформировать XML-документ, не знаю, как
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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