3

使用 SQL Server 2008,我有一个使用 FOR XML 发出结果集的查询。现在它是一个不合规的片段。

如何将我的结果 XML 包装在一个封闭元素中,然后将一个简单的 XML 声明与单个模式/命名空间引用放在顶部以使输出符合要求?

谢谢。

4

2 回答 2

4

将“WITH XMLNAMESPACES”添加到开头,并将 ROOT() 添加到 FOR XML 子句:

WITH XMLNAMESPACES ( DEFAULT 'http://namespace_uri_here' )
SELECT * 
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')
于 2011-03-24T18:17:52.343 回答
4

在 SQL Server 的 XML 数据类型中不可能有 XML 处理指令。

请参阅XML 数据类型的限制

这段代码

declare @XML xml =  
  '<?xml version="1.0"?>
   <root>Value</root>'

select @XML

有输出

<root>Value</root>

您可以使用适当的 XML 处理指令将 XML 构建为字符串。

declare @XML xml = '<root>Value</root>'
declare @XMLStr nvarchar(max) = '<?xml version="1.0"?>'
  
set @XMLStr = @XMLStr + cast(@XML as nvarchar(max))

select @XMLStr

输出

--------------------------------------------------------------------------
<?xml version="1.0"?><root>Value</root>
于 2011-03-24T22:16:58.160 回答