powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
25 сообщений из 39, страница 1 из 2
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860735
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Направьте, пожалуйста. Абсолютный новичок в вопросе xml.

Есть файл xsd, есть база где известны все таблицы.поля с нужными данными.
Нужно сформировать файл xml для сторонней программы.

С чего начать? что почитать? можно ли как-то средствами MS sqlXML получить?

хелпы смотрю: отправляет на XMLсхемы на Visual Studio,
SELECT... FOR XML выдает непонятно по тегам - файл как xml не читается.
понимаю, что чем больше "перелопатить" информации, тем яснее будет вопрос, но времени маловато
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860745
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liana2509С чего начать? что почитать? можно ли как-то средствами MS sqlXML получить?
Читать хелп FOR XML

Liana2509SELECT... FOR XML выдает непонятно по тегам - файл как xml не читается.
Не читается чем ? И с какой ошибкой ?
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860751
DKasimov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Liana2509,

Liana2509
С чего начать? что почитать? можно ли как-то средствами MS sqlXML получить?


https://msdn.microsoft.com/ru-ru/library/ms178107.aspx
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860775
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liana2509, схема используется только для контроля "well-formed" документа, она не является основой для построения.
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860891
petalvik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liana2509SELECT... FOR XML выдает непонятно по тегам - файл как xml не читается.
FOR XML выдаёт набор узлов без корневого элемента. Вероятно, поэтому не читается. Нужно полученные от сервера данные добавить в корень документа.
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38860895
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38870950
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

Как-то можно написать "select .... for xml", чтобы определенные поля были между нужными тегами?
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38870999
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
select 1 as [Тэг] for xml path('')
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871026
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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 @root varchar(max) = 'rootName'

--  какой-то заголовок
declare @header table (h1 int, h2 varchar(max))
insert @header
values (10, 'this is header') -- только одна строка заголовка

-- строки данных из одной таблицы
declare @recipients table (id int)
insert @recipients
values (100), (200)

-- строки данных из другой таблицы
declare @rows table (f1 int, f2 varchar(max))
insert @rows
values (5, 'text1'), (7, 'text2')

select * from @header
select * from @recipients
select * from @rows


select
  rootName.*
  , (select id as [RecipientID] from @recipients for xml path(''),type) as [Recipients]
  , (select f1 as [Data/@ID],f2 as [Data/@Value] from @rows for xml path(''),type) as [Rows]
from @header rootName for xml auto
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871028
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2, Спасибо! получилось.

а как получить вложенность? как в один тег еще несколько тегов можно вставить?

вот есть два запроса, выводят нормально:

select ПродНаимОрг as [НаимОрг], ПродИННЮл as [ИннЮл], ПродКпп as [КПП]
FROM kpp_2014_xml where продНаимОрг = @продНаимОрг for xml path('СвЮЛ'), root('ИдСв')

select ПродИндекс as [Индекс], ПродКодРегион as [КодРегион], ПродГород as [Город], ПродУлица as [Улица], ПродДом as [Дом]
FROM kpp_2014_xml where продНаимОрг = @продНаимОрг for xml path('АдрРФ'), root('Адрес')

как их объединить в общий тэг?
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871037
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XML = текст.

Или еще один запрос нарисовать.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select
(
select ПродНаимОрг as [НаимОрг], ПродИННЮл as [ИннЮл], ПродКпп as [КПП]
FROM kpp_2014_xml where продНаимОрг = @продНаимОрг for xml path('СвЮЛ'), root('ИдСв')
) as [Тэг1]
,(
select ПродИндекс as [Индекс], ПродКодРегион as [КодРегион], ПродГород as [Город], ПродУлица as [Улица], ПродДом as [Дом]
FROM kpp_2014_xml where продНаимОрг = @продНаимОрг for xml path('АдрРФ'), root('Адрес') 
) as [Тэг2]
for xml path('');
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871040
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusR, Спасибо огромное! на минуту раньше моего вопроса, дали ответ )
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871043
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks2, Спасибо огромное! Вроде, все понятно, попробую
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871865
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Liana2509,
нужно написать файл xml для загрузки. 1ый вариант, как у меня получилось (часть файла), второй - пример загружаемого файла.
это разные тексты для загрузчика?
у меня не проходит проверку на соответствие схеме xsd.....

1.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  <ТаблСчФакт>
    <СведТов>
      <НомСтр>1</НомСтр>
      <НаимТов>Платеж по лизингу</НаимТов>
      <СтТовУчНал>195961.00</СтТовУчНал>
      <Акциз>
        <СумАкциз>"без акциза"</СумАкциз>
      </Акциз>
      <СумНал>
        <СумНДС>29892.3600</СумНДС>
      </СумНал>
    </СведТов>
    <ВсегоОпл>
      <СтТовУчНалВсего>195961.00</СтТовУчНалВсего>
      <СумНалВсего>
        <СумНДС>29892.36</СумНДС>
      </СумНалВсего>
    </ВсегоОпл>
  </ТаблСчФакт>



2.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
- <ТаблСчФакт>
- <СведТов НомСтр="1" НаимТов="Платеж по лизингу" СтТовУчНал="195961.00">
  <Акциз СумАкциз="без акциза" /> 
  <СумНал СумНДС="29892.36" /> 
  </СведТов>
- <ВсегоОпл СтТовУчНалВсего="195961.00">
  <СумНалВсего СумНДС="29892.36" /> 
  </ВсегоОпл>
  </ТаблСчФакт>
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871880
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liana2509,
конечно разные
например у вас
<НомСтр>1</НомСтр>
<НаимТов>Платеж по лизингу</НаимТов>
<СтТовУчНал>195961.00</СтТовУчНал>
это узлы вложенные в узел <СведТов>
а в варианте 2
НомСтр="1" НаимТов="Платеж по лизингу" СтТовУчНал="195961.00" - это атрибуты узла <СведТов>
Привидите текст sql- которым вы получаете xml вариант 1 - попробуем его подрихтовать чтобы получить вариант 2
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871883
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusR,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
(select
  (select id as [НомСтр], НаимТов as [НаимТов], СтТовУчНал as [СтТовУчНал]
          , (select '"без акциза"' as [СумАкциз] for xml path(''), type) as 'Акциз'         
          , (select СумНдс as [СумНДС] for xml path(''), type) as 'СумНал'
       FROM  kpp_2014_xml_pdocmat  for xml path(''),type) as 'СведТов'
  ,
   (select СтТовУчНалВсего as [СтТовУчНалВсего]         
          , (select СумНдс as [СумНДС] for xml path(''), type) as 'СумНалВсего'
       FROM  kpp_2014_xml  for xml path(''), type) as 'ВсегоОпл'
for xml path(''),type) as 'ТаблСчФакт' 
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871887
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Liana2509,

а структура таблиц kpp_2014_xml_pdocmat и kpp_2014_xml ?
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871898
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusR, спасибо за помощь

"до вчерашнего дня" не сталкивалась с xml, что такое атрибуты - тоже не знаю... стыдно

таблицы простые, дополнительно их создала, все данные подтянула, типы данных nvarchar() или money:

Код: sql
1.
2.
3.
4.
5.
6.
select * ДокументКНД, tdoc, НомерСчФ, ДатаСчФ, КодОКВ, ПродНаимОрг, ПродИннЮЛ,  ПродКПП,
                     ПродИндекс,ПродКодРегион, ПродГород,ПродУлица, ПродДом, ПродКвартира, НомерПРД, 
                     ДатаПРД, ПокупНаимОрг, ПокупИннЮЛ, ПокупКПП, ПокупИндекс, ПокупКодРегион,ПокупГород,
                     ПокупУлица, ПокупДом,ПокупКорпус,СтТовУчНалВсего,СумНДС from kpp_2014_xml

 select * from НаимТов, СтТовУчНал, СумАкциз, НалСтВел, НалСтТип, СумНДС from kpp_2014_xml_pdocmat
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871900
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select'ы умею писать простые ) выше накопировала не с того места
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871905
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что - то типа такого попробуйте
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select 
  id as [СведТов/@НомСтр]
, НаимТов as [СведТов/@НаимТов]
, СтТовУчНал as [СведТов/@СтТовУчНал]
, СумАкциз as [СведТов/Акциз/@СумАкциз] 
, СумНдс as [СведТов/СумНал/@СумНДС]
,(select   СтТовУчНалВсего as [ВсегоОпл/@СтТовУчНалВсего]         
          ,СумНдс as [ВсегоОпл/СумНалВсего/@СумНДС]
  FROM  kpp_2014_xml  for xml path(''), type) as '*'
FROM  kpp_2014_xml_pdocmat  for xml path(''),root('ТаблСчФакт'),type 



но по идее таблицы kpp_2014_xml и kpp_2014_xml_pdocmat должны быть как то связаны
если конечно это уже не уже преподготовленные к выгрузке данные
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38871914
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusR, Спасибо огромное!
прям все как надо )
постараюсь, остальные части по аналогии прописать
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38873043
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!

осталось чуть-чуть:
процедура ngs.dbo.Export_XML_UL 123 возвращает xml-фрагмент как нужно,
как добавить строку <?xml version="1.0" encoding="windows-1251"?> в создаваемый файл?
файл создаю так (спасибо, всем кто делится знаниями):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 
DECLARE @result int
DECLARE @OutputFileName varchar(max)
DECLARE @cmd varchar(8000)

Set @OutputFileName = 'C:\\111\123.xml'

Set @cmd = 'BCP "EXEC ngs.dbo.Export_XML_UL 123" queryout "' + @OutputFileName + '" -c -C1251 -r -T'

EXEC @result = master..xp_cmdshell  @cmd  
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38873126
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из процедуры выводите сконкатенированную строку
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare @xml xml
set @xml = 
(select 
  id as [СведТов/@НомСтр]
, НаимТов as [СведТов/@НаимТов]
, СтТовУчНал as [СведТов/@СтТовУчНал]
, СумАкциз as [СведТов/Акциз/@СумАкциз] 
, СумНдс as [СведТов/СумНал/@СумНДС]
,(select   СтТовУчНалВсего as [ВсегоОпл/@СтТовУчНалВсего]         
          ,СумНдс as [ВсегоОпл/СумНалВсего/@СумНДС]
  FROM  kpp_2014_xml  for xml path(''), type) as '*'
FROM  kpp_2014_xml_pdocmat  for xml path(''),root('ТаблСчФакт'),type) 

select '<?xml version="1.0" encoding="windows-1251"?>' +cast(@xml as varchar(max))
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38873169
Liana2509
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LexusR, по - хорошему, мне нужно поделиться с Вами половиной премии )

а как поступают, если файл xml очень большой, по смысловым частям переводят в строковую переменную и плюсуют сколько нужно раз? ведь в тип nvarchar - максимум 8000 символов вмещается

еще одно "Огромное Спасибо!" и приятных Вам выходных
...
Рейтинг: 0 / 0
Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
    #38873229
LexusR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cast(@xml as varchar(max))
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Направьте, пож-та. Есть схема xsd, как получить xml файл с данными?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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