使用 SQL Server 2008,我有一个使用 FOR XML 发出结果集的查询。现在它是一个不合规的片段。
如何将我的结果 XML 包装在一个封闭元素中,然后将一个简单的 XML 声明与单个模式/命名空间引用放在顶部以使输出符合要求?
谢谢。
使用 SQL Server 2008,我有一个使用 FOR XML 发出结果集的查询。现在它是一个不合规的片段。
如何将我的结果 XML 包装在一个封闭元素中,然后将一个简单的 XML 声明与单个模式/命名空间引用放在顶部以使输出符合要求?
谢谢。
将“WITH XMLNAMESPACES”添加到开头,并将 ROOT() 添加到 FOR XML 子句:
WITH XMLNAMESPACES ( DEFAULT 'http://namespace_uri_here' )
SELECT *
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')
在 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>