【问题标题】:escaping special characters in sql for generating xml file转义 sql 中的特殊字符以生成 xml 文件
【发布时间】:2012-04-20 01:52:54
【问题描述】:

我使用的是 SQL Server 2008,而且我对编写 sql 还是很陌生。我的目标是将表格中的数据导出为 xml 格式,以创建可在我们的网站中使用的 CAP 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 标识符”错误?象征。有人可以帮忙吗?

【问题讨论】:

    标签: sql xml sql-server-2008 escaping


    【解决方案1】:

    您不能使用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

    【讨论】:

      猜你喜欢
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-14
      相关资源
      最近更新 更多