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

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
как эту штуковину засунуть в начало: <?xml version="1.0" encoding="windows-1251"?>

SELECT

a.ID as 'ID',
a.Title as 'title',
a.Announce as 'Announce',
a.Contents as 'Contents',
CONVERT(nvarchar(30),a.PublishDate,104) as 'publishDate'
FROM dbo.NewsTable AS a LEFT OUTER JOIN
dbo.NewsTypeTable AS b ON a.ID = b.NewsID
WHERE (a.PublishDate > GETDATE()-100) AND (
b.TypeID = 46 OR
b.TypeID = 45
)
ORDER BY a.PublishDate DESC

for xml path('news'), root('export')
я уже моск сломал
5 апр 12, 10:53    [12369026]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
Александр52,
set @xml = ' <?xml version="1.0" encoding="windows-1251"?> ' + @xml ;
?
5 апр 12, 10:57    [12369062]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
так низя, ты в тип xml кладешь строку + xml
5 апр 12, 11:01    [12369119]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр52
так низя, ты в тип xml кладешь строку + xml

Что мешает сделать из xml строку ?
5 апр 12, 11:02    [12369125]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
мне на выходе надо получить xml
declare @qwetry nvarchar(max)
set @qwetry =  '<?xml version="1.0" encoding="windows-1251"?>' + 

cast((SELECT     

a.ID as 'ID',
 a.Title as 'title',
 a.Announce as 'Announce', 
a.Contents as 'Contents', 
 CONVERT(nvarchar(30),a.PublishDate,104)  as 'publishDate'
FROM         dbo.NewsTable AS a LEFT OUTER JOIN
                      dbo.NewsTypeTable AS b ON a.ID = b.NewsID
WHERE     (a.PublishDate > GETDATE()-100) AND (    
                      b.TypeID = 46 OR
                      b.TypeID = 45 
                   )
ORDER BY a.PublishDate DESC

for xml path('news'), root('export')) as nvarchar(max))


declare @qwetry2 xml
set @qwetry2 = cast(@qwetry as xml)

так вы предлагаете?
5 апр 12, 11:08    [12369182]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр52
как эту штуковину засунуть в начало: <?xml version="1.0" encoding="windows-1251"?>
А накуя это там?
Тот кто пишет это в файл тот и добавляет. SQL в файл писать не умеет. Только сторонние утилиты (хотя некоторые изкаробки самим MS поставляются).

BCP?
5 апр 12, 11:09    [12369189]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр52, в XML нет никаких <?xml version="1.0" ...
Вас жутко обманули.
5 апр 12, 11:10    [12369198]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
я же и выгружаю это в файл
у наших дизайнеров файл в ИЕ не открывается - если вначале не стоит <?xml version="1.0" encoding="windows-1251"?>
5 апр 12, 11:13    [12369222]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр52
я же и выгружаю это в файл
Каким средством?
5 апр 12, 11:13    [12369226]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Mnior
Александр52
я же и выгружаю это в файл
Каким средством?

без использования bcp
через ф-ию записи в файл, которая берет значение и кладет его в файл
5 апр 12, 11:18    [12369253]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр52
которая берет значение

Что прямо вот так тип xml и берет ?
5 апр 12, 11:19    [12369262]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Glory
Что прямо вот так тип xml и берет ?

да, и выгружает как надо. Не важно как я это реализовал, вопрос в другом.

конверты из варчара в xml не подходят, т.к. порят конечную строку
5 апр 12, 11:46    [12369471]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр52
да, и выгружает как надо.

Вот интересно, а откуда эта внешняя функция знает про внутренние типы данных MSSQL ?
Наверное просто ваш xml на входе конвертируется в символьную строку ?
5 апр 12, 12:09    [12369631]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр52
конверты из варчара в xml не подходят, т.к. порят конечную строку

И чем же они ее портят ?
5 апр 12, 12:09    [12369632]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
ElenHim
Member

Откуда: Москва
Сообщений: 204
Если ваша функция такая клёвая, что ей стоит сначала выгрузить в файл заголовок, а потом и основной xml дописать?
5 апр 12, 12:11    [12369643]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5136
Всем большое спасибо! Проблему решил.
Выкладываю на сервак в формате текста, дописываю xml - получаю xml.
5 апр 12, 12:32    [12369727]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Александр52
через ф-ию записи в файл, которая берет значение и кладет его в файл
Вам уже сказали что дело именно в ней.

Александр52
конверты из варчара в xml не подходят, т.к. порят конечную строку
Вы совершенно непонимаете работу со строками. Строки всегда имёют кодировку, что в памяти что в файле, что в потоках.
Если брать строку в кодировке X, а потом её бинарно сохранять как типа Y, не конвертировав, то вы нарушаете данные.

Все современные языки/фреймворки делают это автоматом. Но нужно контролить свой уровень бажности программ. Чтоб хотябы не более 50% кода было багами, а не как обычно у большинства - 90%.

Вот кста набросок процедуры сохранения файла: 9803638
Можете допилить для XML. Прописывая шапку файла ( <?xml version="1.0" encoding="xxx"?>) в зависимости от кодировки.

Перекодирование строк делается постоянно и многократно. Просто никто это не замечает. Условно говоря работа со стоками занимает нехилый %% процессорного времени.
5 апр 12, 15:52    [12371219]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Александр52
у наших дизайнеров файл в ИЕ не открывается

А как именно этот файл "не открывается" они не говорили?
У меня, например, прекрасно открывается каких бы то ни было processing instructions. Есть банальное подозрение, что они видят кракозябры ввиду некорретной установки кодировки в xml. Хотя у меня кодировка UTF-8 тоже вполне успешно распозналась:

К сообщению приложен файл. Размер - 38Kb
5 апр 12, 19:39    [12372719]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
P.S. PI c <?xml version="1.0"?> не моя - это от xml pretty print xslt.
5 апр 12, 19:40    [12372724]     Ответить | Цитировать Сообщить модератору
 Re: XML - добавление первой строки - как  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Сон Веры Павловны
UTF-8
В некоторых системах это чуть ли не единственная приемлемая кодировка. А во многих навязываемая / стоящая по умолчанию.
6 апр 12, 10:16    [12374326]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить