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

Откуда:
Сообщений: 457
Добрый день!
Мне раньше не приходилось сталкиваться с xml.
Встала задача выгрузка данных в файл xml в соответствии с образцом.
Мои действия?
Я почитал SELECT ... FOR XML ... -
auto не добился результатов
средствами vs2012 создал схему из xml файла
пробую в sql 2012

create xml schema collection xmlsch1 as
'<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Выгрузка_машин">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Документ">
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="самовывоз" type="xs:string" />
<xs:element name="СкладскоеПеремещение" type="xs:string" />
<xs:element name="Дата_операции" type="xs:string" />
<xs:element name="Тип_операции" type="xs:string" />
<xs:element name="Номер_накладной" type="xs:string" />
<xs:element name="Дата_накладной" type="xs:string" />
<xs:element name="Заказчик" type="xs:string" />
<xs:element name="Пункт_доставки" />
<xs:element name="Пункт_погрузки" />
<xs:element name="VIN">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="НомерГТД" />
<xs:element name="ДатаГТД" />
<xs:element name="СтранаПроизводства" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Валюта" />
<xs:element name="Стоимость" />
<xs:element name="НДС" />
<xs:element name="Всего" />
<xs:element name="Представление_документа" type="xs:string" />
</xs:choice>
</xs:sequence>
<xs:attribute name="наименование" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Дата_выгрузки" type="xs:string" use="required" />
<xs:attribute name="операция" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:schema>'

выдает ошибку
Сообщение 9420, уровень 16, состояние 1, строка 2
XML parsing: line 3, character 21, illegal xml character

если удастся создать, то как ее использовать для формирования xml файла?

Заранее спасибо!
11 дек 13, 14:27    [15277007]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Я попробовал сочинить EXPLICIT и получил что то рядом, но не совсем в цель.
Профессионалы намекните пожалуйста где я неправильно описал запрос
Запрос звучит так

declare
@x xml,
@DOC INT

SET @DOC=85030
SET @x = (
SELECT UN.* FROM (
SELECT
1 AS TAG, NULL AS PARENT,
'Приход' AS [Выгрузка_машин!1!операция],
CONVERT(VARCHAR(20), DI.DateFinal, 121) AS [Выгрузка_машин!1!Дата_выгрузки],
NULL AS [Документ!2!наименование],
NULL AS [Документ!2!хсамовывоз!ELEMENT],
NULL AS [Документ!2!СкладскоеПеремещение!ELEMENT],
NULL AS [Документ!2!Дата_операции!ELEMENT],
NULL AS [Документ!2!Тип_операции!ELEMENT],
NULL AS [Документ!2!Номер_накладной!ELEMENT],
NULL AS [Документ!2!Дата_накладной!ELEMENT],
NULL AS [Документ!2!Заказчик!ELEMENT],
NULL AS [Документ!2!Пункт_доставки!ELEMENT],
NULL AS [Документ!2!Пункт_погрузки!ELEMENT],
NULL AS [VIN!3!!ELEMENT],
NULL AS [VIN!3!НомерГТД!ELEMENT],
NULL AS [VIN!3!ДатаГТД!ELEMENT],
NULL AS [VIN!3!СтранаПроизводства!ELEMENT],
NULL AS [Документ!2!Валюта!ELEMENT],
NULL AS [Документ!2!Стоимость!ELEMENT],
NULL AS [Документ!2!НДС!ELEMENT],
NULL AS [Документ!2!Всего!ELEMENT]
FROM Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
2, 1,
NULL,
NULL,
'Поступление машин '+' от '+ CONVERT(VARCHAR(20), DI.DateFinal, 121),
'ложь',
'ЛОЖЬ',
CONVERT(VARCHAR(20), DI.DateFinal, 121),
'Приход',
CONVERT(VARCHAR(20), DI.DocID),
CONVERT(VARCHAR(10), DI.Date_input, 104),
'зао',
'',
'',
NULL,
NULL,
NULL,
NULL,
'$',
'1',
'0',
'5'
FROM Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
3, 2,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
M.RVIN,
'',
'',
'',
NULL,
NULL,
NULL,
NULL
FROM Doc_in AS DI
INNER JOIN Major M ON DI.DocID = M.DocIN_ID
WHERE DI.DocID = @DOC
) AS UN
FOR XML EXPLICIT
)

SELECT @x

получаю:
<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41.">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41.">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<Дата_операции>2013-12-12 06:29:41.</Дата_операции>
<Тип_операции>Приход</Тип_операции>
<Номер_накладной>85030</Номер_накладной>
<Дата_накладной>12.12.2013</Дата_накладной>
<Заказчик>зао</Заказчик>
<Пункт_доставки />
<Пункт_погрузки />
<Валюта>$</Валюта>
<Стоимость>1</Стоимость>
<НДС>0</НДС>
<Всего>5</Всего>
<VIN>1C4RJFBMXEC250343<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
<VIN>1C4RJFBG6EC293054<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
<VIN>1C4RJFDJ4EC284751<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
<VIN>1C4RJFCM9EC250669<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
<VIN>1C4RJFDJ3EC236514<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
</Документ>
</Выгрузка_машин>

а должно быть:

<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41.">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41.">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<Дата_операции>2013-12-12 06:29:41.</Дата_операции>
<Тип_операции>Приход</Тип_операции>
<Номер_накладной>85030</Номер_накладной>
<Дата_накладной>12.12.2013</Дата_накладной>
<Заказчик>зао</Заказчик>
<Пункт_доставки />
<Пункт_погрузки />
<Валюта>$</Валюта>
<Стоимость>1</Стоимость>
<НДС>0</НДС>
<Всего>5</Всего>
<VIN>
1C4RJFBMXEC250343
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFBG6EC293054
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFDJ4EC284751
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFCM9EC250669
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFDJ3EC236514
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
</Документ>
</Выгрузка_машин>
13 дек 13, 10:24    [15286556]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Извиняюсь еще не досмотрел разницу

<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41.">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41.">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<Дата_операции>2013-12-12 06:29:41.</Дата_операции>
<Тип_операции>Приход</Тип_операции>
<Номер_накладной>85030</Номер_накладной>
<Дата_накладной>12.12.2013</Дата_накладной>
<Заказчик>зао</Заказчик>
<Пункт_доставки />
<Пункт_погрузки />
<VIN>
1C4RJFBMXEC250343
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFBG6EC293054
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFDJ4EC284751
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFCM9EC250669
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<VIN>
1C4RJFDJ3EC236514
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
<Валюта>$</Валюта>
<Стоимость>1</Стоимость>
<НДС>0</НДС>
<Всего>5</Всего>
</Документ>
</Выгрузка_машин>
13 дек 13, 10:26    [15286570]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31439
Draginsv
получаю
...
а должно быть:
А есть где то разница?
13 дек 13, 10:36    [15286655]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
тэг VIN выводится не поэлементно с новой строки
и в запросе последовательность столбцов 2 -ой вложенности не выводятся после тега VIN как в образце,
а выводятся до тега VIN, хотя в первом селекте до union all все столбцы расписаны и в теге с элементом VIN
указана директива ELEMENT.
Не могу понять в чем затык.
13 дек 13, 12:36    [15287611]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
в запросе
NULL AS [VIN!3!!ELEMENT],
NULL AS [VIN!3!НомерГТД!ELEMENT],
NULL AS [VIN!3!ДатаГТД!ELEMENT],

выводится

<VIN>1C4RJFBMXEC250343<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>

а должно быть

<VIN>
1C4RJFBMXEC250343
<НомерГТД />
<ДатаГТД />
<СтранаПроизводства />
</VIN>
что не так?
13 дек 13, 12:42    [15287672]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
> тэг VIN выводится не поэлементно с новой строки

это же только оформление - с точки зрения xml это одно и то же.

> и в запросе последовательность столбцов 2 -ой вложенности не выводятся после тега VIN как в образце

сделайте их отдельными тегами с родительским 2.
13 дек 13, 13:26    [15288044]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
или for xml path() используйте. vin тогда формировать подзапросом, не забыв type.
13 дек 13, 13:39    [15288149]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
daw
или for xml path() используйте. vin тогда формировать подзапросом, не забыв type.

мысль не понял т.к. я по xml не профи.

А как в моем запросе :

SET @x = (
SELECT UN.* FROM (
SELECT
1 AS TAG, NULL AS PARENT,
'Приход' AS [Выгрузка_машин!1!операция],
CONVERT(VARCHAR(19), DI.DateFinal, 121) AS [Выгрузка_машин!1!Дата_выгрузки],
NULL AS [Документ!2!наименование],
NULL AS [Документ!2!хсамовывоз!ELEMENT],
NULL AS [Документ!2!СкладскоеПеремещение!ELEMENT],
NULL AS [Документ!2!Дата_операции!ELEMENT],
NULL AS [Документ!2!Тип_операции!ELEMENT],
NULL AS [Документ!2!Номер_накладной!ELEMENT],
NULL AS [Документ!2!Дата_накладной!ELEMENT],
NULL AS [Документ!2!Заказчик!ELEMENT],
NULL AS [Документ!2!Пункт_доставки!ELEMENT],
NULL AS [Документ!2!Пункт_погрузки!ELEMENT],
NULL AS [VIN!3!!ELEMENT],
NULL AS [VIN!3!НомерГТД!ELEMENT],
NULL AS [VIN!3!ДатаГТД!ELEMENT],
NULL AS [VIN!3!СтранаПроизводства!ELEMENT],
NULL AS [VIN!3!Валюта!ELEMENT],
NULL AS [VIN!3!Стоимость!ELEMENT],
NULL AS [VIN!3!НДС!ELEMENT],
NULL AS [VIN!3!Всего!ELEMENT]
FROM Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
2, 1,
NULL,
NULL,
'Поступление машин '+' от '+ CONVERT(VARCHAR(19), DI.DateFinal, 121),
'ложь',
'ЛОЖЬ',
CONVERT(VARCHAR(19), DI.DateFinal, 121),
'Приход',
CONVERT(VARCHAR(20), DI.DocID),
CONVERT(VARCHAR(10), DI.Date_input, 104),
'зао',
'',
'',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
FROM Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
3, 2,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
M.RVIN,
'',
'',
'',
'',
'',
'',
''
FROM Doc_in AS DI
INNER JOIN Major M ON DI.DocID = M.DocIN_ID
WHERE DI.DocID = @DOC
) AS UN
--ORDER BY TAG
FOR XML EXPLICIT
)

который дает результат

<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41.">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41.">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<Дата_операции>2013-12-12 06:29:41.</Дата_операции>
<Тип_операции>Приход</Тип_операции>
<Номер_накладной>85030</Номер_накладной>
<Дата_накладной>12.12.2013</Дата_накладной>
<Заказчик>зао</Заказчик>
<Пункт_доставки />
<Пункт_погрузки />
<VIN>1C4RJFBMXEC250343<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>
<VIN>1C4RJFBG6EC293054<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>
<VIN>1C4RJFDJ4EC284751<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>
<VIN>1C4RJFCM9EC250669<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>
<VIN>1C4RJFDJ3EC236514<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>
</Документ>
</Выгрузка_машин>

атрибуты <Валюта /><Стоимость /><НДС /><Всего /> тега <VIN>
вынести на 2-ой уровень вложенности чтобы строка

<VIN>1C4RJFBMXEC250343<НомерГТД /><ДатаГТД /><СтранаПроизводства /><Валюта /><Стоимость /><НДС /><Всего /></VIN>

выводилась так

<VIN>1C4RJFBMXEC250343<НомерГТД /><ДатаГТД /><СтранаПроизводства /></VIN>
<Валюта />
<Стоимость />
<НДС />
<Всего />

с использование только EXPLICIT

SQL ругается
если задекларирован [Документ!2!...!ELEMENT], то типа [FINANS!2!Валюта!ELEMENT] нельзя. Как быть?
13 дек 13, 14:31    [15288557]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Draginsv,

имелось в виду:

NULL AS [Валюта!4],
NULL AS [Стоимость!5],
NULL AS [НДС!6],
NULL AS [Всего!7]

ну и да - еще 4 union-а - по одному на каждый тег.

лучше path() все же, наверное. если пример хотите, то давайте скрипты таблиц с тестовыми данными.
13 дек 13, 14:48    [15288725]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
постараюсь
13 дек 13, 14:50    [15288742]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
declare @Doc_in table(DocID int, Date_input datetime, DateFinal datetime)
declare @Major table(DocIN_ID int, rvin varchar(17))

insert into @Doc_in (DocID, Date_input, DateFinal)
select 85030, convert(datetime, '2013-12-12 06:29:41', 121), convert(datetime, '2013-12-12 06:29:41', 121)

insert into @Major (DocIN_ID, rvin)
select 85030, '1C4RJFBMXEC250343'
union all
select 85030, '1C4RJFBG6EC293054'
union all
select 85030, '1C4RJFDJ4EC284751'
union all
select 85030, '1C4RJFCM9EC250669'
union all
select 85030, '1C4RJFDJ3EC236514'




declare
@x xml,
@DOC INT

SET @DOC=85030

SET @x = (
SELECT UN.* FROM (
SELECT
1 AS TAG, NULL AS PARENT,
'Приход' AS [Выгрузка_машин!1!операция],
CONVERT(VARCHAR(19), DI.DateFinal, 121) AS [Выгрузка_машин!1!Дата_выгрузки],
NULL AS [Документ!2!наименование],
NULL AS [Документ!2!хсамовывоз!ELEMENT],
NULL AS [Документ!2!СкладскоеПеремещение!ELEMENT],
NULL AS [Документ!2!Дата_операции!ELEMENT],
NULL AS [Документ!2!Тип_операции!ELEMENT],
NULL AS [Документ!2!Номер_накладной!ELEMENT],
NULL AS [Документ!2!Дата_накладной!ELEMENT],
NULL AS [Документ!2!Заказчик!ELEMENT],
NULL AS [Документ!2!Пункт_доставки!ELEMENT],
NULL AS [Документ!2!Пункт_погрузки!ELEMENT],
NULL AS [VIN!3!!ELEMENT],
NULL AS [VIN!3!НомерГТД!ELEMENT],
NULL AS [VIN!3!ДатаГТД!ELEMENT],
NULL AS [VIN!3!СтранаПроизводства!ELEMENT],
NULL AS [VIN!3!Валюта!ELEMENT],
NULL AS [VIN!3!Стоимость!ELEMENT],
NULL AS [VIN!3!НДС!ELEMENT],
NULL AS [VIN!3!Всего!ELEMENT]
FROM @Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
2, 1,
NULL,
NULL,
'Поступление машин '+' от '+ CONVERT(VARCHAR(19), DI.DateFinal, 121),
'ложь',
'ЛОЖЬ',
CONVERT(VARCHAR(19), DI.DateFinal, 121),
'Приход',
CONVERT(VARCHAR(20), DI.DocID),
CONVERT(VARCHAR(10), DI.Date_input, 104),
'зао',
'',
'',
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
FROM @Doc_in AS DI
WHERE DI.DocID = @DOC
UNION ALL
SELECT
3, 2,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
M.RVIN,
'',
'',
'',
'',
'',
'',
''
FROM @Doc_in AS DI
INNER JOIN @Major M ON DI.DocID = M.DocIN_ID
WHERE DI.DocID = @DOC
) AS UN
--ORDER BY TAG
FOR XML EXPLICIT
)

SELECT @x
13 дек 13, 15:27    [15289046]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
Draginsv,

set @x = (
  select * from (
select 
  'Приход' as [@операция]
  , CONVERT(VARCHAR(19), DI.DateFinal, 121) as [@Дата_выгрузки]
  , 'Поступление машин '+' от '+ CONVERT(VARCHAR(19), DI.DateFinal, 121) as [Документ/@наименование]
  , 'ложь' as [Документ/хсамовывоз]
  , 'ЛОЖЬ' as [Документ/СкладскоеПеремещение]
  , (select m.rvin as [text()]
            , '' as [НомерГТД] 
     from @Major m 
     for xml path('VIN'), type
    ) as [Документ]
  , '$' as [Документ/валюта]
from @Doc_in DI
where DI.DocID = @DOC ) t
for xml path ('Выгрузка_машин')  
  )


ну, остальное доделаете уже? через explicit тоже можно, но в данном случае смысла нет, по-моему.
13 дек 13, 16:52    [15289712]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
daw,
ваш результат

<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<VIN>1C4RJFBMXEC250343<НомерГТД /></VIN>
<VIN>1C4RJFBG6EC293054<НомерГТД /></VIN>
<VIN>1C4RJFDJ4EC284751<НомерГТД /></VIN>
<VIN>1C4RJFCM9EC250669<НомерГТД /></VIN>
<VIN>1C4RJFDJ3EC236514<НомерГТД /></VIN>
<валюта>$</валюта>
</Документ>
</Выгрузка_машин>

а надо

<Выгрузка_машин операция="Приход" Дата_выгрузки="2013-12-12 06:29:41">
<Документ наименование="Поступление машин от 2013-12-12 06:29:41">
<хсамовывоз>ложь</хсамовывоз>
<СкладскоеПеремещение>ЛОЖЬ</СкладскоеПеремещение>
<VIN>1C4RJFBMXEC250343<НомерГТД /></VIN>
<валюта>$</валюта>
<VIN>1C4RJFBG6EC293054<НомерГТД /></VIN>
<валюта>$</валюта>
<VIN>1C4RJFDJ4EC284751<НомерГТД /></VIN>
<валюта>$</валюта>
<VIN>1C4RJFCM9EC250669<НомерГТД /></VIN>
<валюта>$</валюта>
<VIN>1C4RJFDJ3EC236514<НомерГТД /></VIN>
<валюта>$</валюта>
</Документ>
</Выгрузка_машин>

такой вот образец сформированный в 1С

я честно по логике не понимаю как на уровне вложенности элемента <документ .. (одна запись), могут повторяться теги по смыслу как атрибуты тега VIN (много записей)
13 дек 13, 17:46    [15290002]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
с for xml path на вашем примере понял данный вариант использования опции path
Спасибо!
но вот построить повторяемость тега <Валюта> вслед за тегом <VIN> не получается
13 дек 13, 17:56    [15290043]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Ennor Tiegael
Member

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

Жееесть... надо быть реально больным на всю голову, чтобы придумать такую XML-схему.
select
	'Приход' as [@операция], CONVERT(VARCHAR(19), DI.DateFinal, 121) as [@Дата_выгрузки],
	'Поступление машин от '+ CONVERT(VARCHAR(19), DI.DateFinal, 121) as [Документ/@наименование],
	'ложь' as [Документ/хсамовывоз],
	'ЛОЖЬ' as [Документ/СкладскоеПеремещение], (
		select (
			select m.rvin as [text()], '' as [НомерГТД]
			for xml path('VIN'), type
			), (
			select '$' as [валюта] for xml path(''), type
			)
		from @Major m
		for xml path(''), type
	) as [Документ]
from @Doc_in DI
where DI.DocID = @DOC
for xml path ('Выгрузка_машин'), type;
14 дек 13, 08:41    [15292138]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Draginsv
Member

Откуда:
Сообщений: 457
Ennor Tiegael ,
Спасибо то что надо.
Жесть эту не я придумал, а заказчик - сторонняя организация.
Первый раз потребовали xml, кто текст, кто эксэль.
16 дек 13, 09:51    [15297063]     Ответить | Цитировать Сообщить модератору
 Re: выгрузка XML  [new]
Virtuoz
Member

Откуда: Украина
Сообщений: 307
Вот здесь еще статья по данному вопросу:
16 дек 13, 15:14    [15299358]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить