2012-04-20 120 views
1

我正在使用SQL Server 2008,而且我对编写sql相当陌生。我的目标是将数据从表格导出为xml格式,以创建可用于我们网站的CAP xml文件。目前,我只是写一些选择语句来以正确的格式检索数据。这里是代码:在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