【问题标题】:Add xsi:type to element when using ... for xml explicit, root('ArrayOfEventItem')将 xsi:type 添加到元素时使用 ... for xml explicit, root('ArrayOfEventItem')
【发布时间】:2015-10-10 09:23:58
【问题描述】:

我在 SQL Server 中创建了一些 XML:

select 
    1 as Tag,
    NULL as Parent,    
    a.Start as [EventItem!1!StartTime!Element],
    a.[End] as [EventItem!1!EndTime!Element],
    a.ResId as [EventItem!1!ResourceId!Element],
 from
    Activity a 
 for xml explicit, root('ArrayOfEventItem')

结果是:

  <EventItem>
    <StartTime>2012-08-16T08:00:00</StartTime>
    <EndTime>2012-08-16T17:00:00</EndTime>
    <ResourceId>3</ResourceId>
  </EventItem>
  <EventItem>
    <StartTime>2013-06-06T08:00:00</StartTime>
    <EndTime>2013-06-06T17:00:00</EndTime>
    <ResourceId>4</ResourceId>
  </EventItem>

但我还需要结果中的类型信息 - 它应该是:

<EventItem>
    <StartTime xsi:type="xsd:dateTime">2012-08-16T08:00:00</StartTime>
    <EndTime xsi:type="xsd:dateTime">2012-08-16T17:00:00</EndTime>
    <ResourceId xsi:type="xsd:int">3</ResourceId>
</EventItem>
<EventItem>
    <StartTime xsi:type="xsd:dateTime">2013-06-06T08:00:00</StartTime>
    <EndTime xsi:type="xsd:dateTime">2013-06-06T17:00:00</EndTime>
    <ResourceId xsi:type="xsd:int">4</ResourceId>
</EventItem>

如何将这个(xsi:type="")添加到我的选择语句中?

【问题讨论】:

    标签: sql-server xml tsql


    【解决方案1】:
    ;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema-instance' AS xsi )
    select 
        1 as "Tag",
        NULL as "Parent",    
        'xsd:dateTime' AS "StartTime/@xsi:type",
        a.Start as "StartTime",
        'xsd:dateTime' AS "EndTime/@xsi:type",
        a.[End] as "EndTime",
        'xsd:int' AS "ResourceId/@xsi:type",    
        a.ResId as "ResourceId"
     FROM
        Activity a 
     FOR XML PATH('EventItem'), ROOT('ArrayOfEventItem')
    

    【讨论】:

    • @BennoDual 1.5 年 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    相关资源
    最近更新 更多