2012-04-20 4 views
1

Я использую SQL Server 2008, и я довольно новичок в написании sql. Моя цель - экспортировать данные из таблицы в XML-формат, чтобы создать XML-файл CAP, который можно использовать на нашем веб-сайте. В настоящее время я просто пишу несколько операторов выбора для извлечения данных в правильном формате. Вот код:escaping специальных символов в sql для генерации файла xml

select (SELECT TOP 5 [Master_Incident_Number] AS incidents 
,[Jurisdiction] AS jurisdiction 
,[Response_Date] AS Date 
FROM [ESCAD_DW_System].[dbo].[CurrentIncidents_V] Incident 
FOR XML PATH ('area'), type) AS Alert for xml path (''), 
ROOT ('?xml version = "1.0" encoding = "UTF-8"?') 

Однако, я получаю ошибку «неправильный идентификатор XML» для '?' символ. Может ли кто-нибудь помочь?

ответ

0

Вы не можете использовать ROOT, чтобы добавить тег кодировки xml. Единственный способ сделать это - преобразовать вывод xml в varchar(max) и добавить с вашим тегом кодирования. Имейте в виду, что вывод FOR XML по умолчанию является UTF-16, поэтому ваша кодировка UTF-8, вероятно, не нужна. Сказав, что, вот простой пример, который использует UDF для преобразования XML в varchar(max):

create function gimmexml() 
returns varchar(max) 
as 
begin 
    return (
     select a='some', b='xml' 
     for xml path ('')   
    ) 
end 
go 

select '<?xml version="1.0" encoding="UTF-8"?>'+dbo.gimmexml(); 

Результат:

<?xml version="1.0" encoding="UTF-8"?><a>some</a><b>xml</b> 

Дальнейшее чтение: http://www.devnewsgroups.net/group/microsoft.public.sqlserver.xml/topic60022.aspx http://msdn.microsoft. com/en-us/library/ms345137% 28v = sql.90% 29.aspx

Смежные вопросы