在XML标记中包含udt:

时间:2018-11-02 08:24:54

标签: sql-server sql-server-2017

使用SQL查询,我需要获取如下数据。

<AcceptanceDateTime>
  <udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString>
</AcceptanceDateTime>

我尝试使用下面的SQL查询生成它,但是会引发错误

begin tran
    SELECT
        format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'                    
    INTO #tblCDSDeclarationAcceptanceDateTime

    SELECT * FROM #tblCDSDeclarationAcceptanceDateTime


    SELECT  
            '304' AS '@formatCode',
            Acc.[udt:DateTimeString]                        
    FROM    #tblCDSDeclarationAcceptanceDateTime Acc

    FOR XML PATH('AcceptanceDateTime'), TYPE

rollback tran

错误如下所示

Msg 6846, Level 16, State 4, Line 9
XML name space prefix 'udt' declaration is missing for FOR XML column name 'udt:DateTimeString'.

任何人都知道如何将“ udt:”作为标记名称。

3 个答案:

答案 0 :(得分:0)

您需要在查询中添加“ with xmlnamespaces”。试试这个:

begin tran
SELECT
    format( GETDATE(),'yyyyMMddHHmmss') +'Z' as 'udt:DateTimeString'                    
INTO #tblCDSDeclarationAcceptanceDateTime

SELECT * FROM #tblCDSDeclarationAcceptanceDateTime

;WITH XMLNAMESPACES ('udt' as udt) 
SELECT  
        '304' AS '@formatCode',
        Acc.[udt:DateTimeString]         
FROM    #tblCDSDeclarationAcceptanceDateTime Acc

FOR XML PATH('AcceptanceDateTime'), TYPE

rollback tran

答案 1 :(得分:0)

首先

this._ipc.getFiles()
            .subscribe(files => {
                this.images = files;
            })

无效的xml,因为没有名称空间定义。那就是为什么你得到

  

FOR XML列缺少XML名称空间前缀'udt'声明   名称'udt:DateTimeString'。

要提供xml名称空间定义,请使用WITH XMLNAMESPACES子句。但是这里还有更多-由于<div class="image" *ngFor="let image of images"> <img [src]="image"> </div> 属性嵌入在<AcceptanceDateTime> <udt:DateTimeString formatCode="304">20161207010101Z</udt:DateTimeString> </AcceptanceDateTime> 标记中,并且省略了前缀,因此属性也应使用前缀规范。请参见以下示例:

formatCode

结果

udt:DateTime

答案 2 :(得分:0)

您需要首先定义XMLNAMESPACES,在这种情况下,它仅是udt

;WITH XMLNAMESPACES ('udt' as udt)
SELECT '304' AS '@formatCode',
    Acc.[udt:DateTimeString] 
FROM #tblCDSDeclarationAcceptanceDateTime Acc
for xml path('AcceptanceDateTime'),type

哪个生产

<AcceptanceDateTime xmlns:udt="udt" formatCode="304">
    <udt:DateTimeString>20181102140727Z</udt:DateTimeString>
</AcceptanceDateTime>