且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何在 SQL Server 2014 的 XML 根目录中添加 xmlns

更新时间:2022-06-07 22:26:18

SQL Server 一遍又一遍地为每个子选择添加命名空间,这是一个非常烦人的行为.

It is a very annoying behaviour, that SQL Server adds namespaces to each sub-select over and over.

您会在 SO 上找到很多解决方法,有些使用丑陋的 NVARCHAR(MAX) 强制转换以在字符串基础上插入命名空间,其他使用或多或少复杂的方式.

You will find a lot of workarounds here on SO, some use an ugly cast to NVARCHAR(MAX) to insert the namespace on string base, other use more or less complicated ways.

对你来说最简单的应该是这样的:

For you the simplest should be this:

DECLARE @xml XML;
;WITH XMLNAMESPACES (DEFAULT 'http://abc.go.com')
SELECT @xml=
    (
        SELECT ID,Name
        FROM @TEMP
        FOR XML PATH('DefaultName'),ROOT('Person'),TYPE
    );
DECLARE @d DATETIME=GETDATE();
DECLARE @mid VARCHAR(100)='11EXP'+REPLACE(convert(varchar(10),getdate(),103),'/','')+'1';

SET @xml.modify('insert (attribute MsgDtTm {sql:variable("@d")}
                        ,attribute MessageId {sql:variable("@mid")}) into (/*:Person)[1]');

SELECT @xml;

重要

点击此链接,登录并投票.

这是一个持续年的众所周知的问题!..