使用SQL Server 2008,我有一个使用FOR XML发出结果集的查询。现在它是一个不符合要求的片段。SQL Server for XML Enclosing Element?
如何将我的结果XML封装在封闭的元素中,然后将简单的XML声明放在顶部,并使用单个模式/名称空间引用使输出符合要求?
谢谢。
使用SQL Server 2008,我有一个使用FOR XML发出结果集的查询。现在它是一个不符合要求的片段。SQL Server for XML Enclosing Element?
如何将我的结果XML封装在封闭的元素中,然后将简单的XML声明放在顶部,并使用单个模式/名称空间引用使输出符合要求?
谢谢。
它是不可能在SQL Server中的XML数据类型的XML处理指令。 见Limitations of the xml Data Type
此代码
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>
添加“WITH XMLNAMESPACES”的开头和根()到FOR XML子句:
WITH XMLNAMESPACES (DEFAULT 'http://namespace_uri_here')
SELECT *
FROM TABLE
FOR XML AUTO, ROOT('TopLevel')
在我的C#编码器说,我加倍字符串使用“浪费”的内存,但如果这是最好的方式(和MSSQL处理字符串garbase集合),我猜这里没有问题。谢谢! – Snowy 2011-04-04 00:25:00