簡體   English   中英

sql server-對於XML Raw-將自定義屬性添加到元素

[英]sql server - For XML Raw - Add custom attribute to the element

我正在嘗試在SQL Server 2014中以以下期望的格式生成XML。但是我無法對將屬性名稱添加到Param元素進行此小的更改。 我只是想將“ name”屬性與值一起添加到Param元素中。

當前的SQL語句:

 Declare @requestMessage xml,
  @P1 nvarchar(20)= 'Rocky', @P2 nvarchar(20) = 'Boxer', @P3 nvarchar(20) = 'SpaceX',
@P4 nvarchar(20)

select @requestMessage =    (select  'dbo.usp_InsertUserPlay' as [SProc],
                                    (select @P1 as [Param], 
                                            @P2 as [Param],     
                                            @P3 as [Param],           
                                            @P4 as [Param],    
                                            0 as [Param]
                         FOR XML RAW('ParamList'), TYPE, ELEMENTS XSINIL)
                   FOR XML PATH('AsyncRequest'), TYPE, ELEMENTS XSINIL)

select @requestMessage AS XML_Output

XML輸出:

<AsyncRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SProc>dbo.usp_InsertUserPlay</SProc>
  <ParamList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Param>Rocky</Param>
    <Param>Boxer</Param>
    <Param>SpaceX</Param>
    <Param xsi:nil="true" />
    <Param>0</Param>
  </ParamList>
</AsyncRequest>

我所需的XML輸出:-

<AsyncRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <SProc>dbo.usp_InsertUserPlay</SProc>
    <ParamList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <Param name="P1">Rocky</Param>
        <Param name="P2">Boxer</Param>
        <Param name="P3">SpaceX</Param>
        <Param name="P4" xsi:nil="true" />
        <Param name="P5">0</Param>
    </ParamList>
</AsyncRequest>

這應該生成預期的xml:

Declare
  @P1 nvarchar(20)= 'Rocky',
  @P2 nvarchar(20) = 'Boxer',
  @P3 nvarchar(20) = 'SpaceX',
  @P4 nvarchar(20)

select  'dbo.usp_InsertUserPlay' as [SProc],
(
    select * FROM (VALUES 
        ('P1', @P1),
        ('P2', @P2),     
        ('P3', @P3),
        ('P4', @P4),
        ('P5', '0')) T([Param/@name], [Param])
    FOR XML PATH(''), ROOT('ParamList'), TYPE, ELEMENTS XSINIL
) FOR XML PATH('AsyncRequest'), TYPE, ELEMENTS XSINIL

結果:

<AsyncRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <SProc>dbo.usp_InsertUserPlay</SProc>
  <ParamList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Param name="P1">Rocky</Param>
    <Param name="P2">Boxer</Param>
    <Param name="P3">SpaceX</Param>
    <Param name="P4" xsi:nil="true" />
    <Param name="P5">0</Param>
  </ParamList>
</AsyncRequest>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM