使用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