【问题标题】:how to output xml with attribute and field value in TSQL如何在SQL中输出带有属性和字段值的xml
【发布时间】:2011-12-14 09:38:51
【问题描述】:

我想从 xml 表中输出一些字段。我需要将列的名称放在名称属性中。输出必须类似于:

<udfields>
<udfield name="infoplanner">Test for the info</udfield>
<udfield name="plant">Amsterdam</udfield>
<udfield name="capability"/>
</udfields>

我尝试过这样的事情:

SELECT TOP 3
    ko.infoPlanner AS "udfield/name/@infoplanner"
  , ko.plant AS "udfield/name/@plant"
  , ko.capability AS "udfield/name/@capability"
FROM    sometable ko
WHERE   CONVERT(VARCHAR(8), ko.datumtijd, 112) = CONVERT(VARCHAR(8), GETDATE(), 112)
        AND COALESCE(ko.infoPlanner, '') <> ''
FOR     XML PATH('')

提前感谢,莱昂

【问题讨论】:

    标签: xml tsql


    【解决方案1】:

    我猜你正在寻找这样的东西:

    declare @T table
    (
      infoplanner int,
      plant int,
      capability int
    )
    
    insert into @T
    select 1, 2, 3 union all
    select 10, 20 ,30
    
    select (select 'infoplanner' as '@name', 
                   infoplanner as '*' 
            for xml path('udfield'), type),
           (select 'plant' as '@name',
                   plant as '*' 
            for xml path('udfield'), type),
           (select 'capability' as '@name',
                   capability as '*' 
            for xml path('udfield'), type)
    from @T
    for xml path('udfields')
    

    结果:

    <udfields>
      <udfield name="infoplanner">1</udfield>
      <udfield name="plant">2</udfield>
      <udfield name="capability">3</udfield>
    </udfields>
    <udfields>
      <udfield name="infoplanner">10</udfield>
      <udfield name="plant">20</udfield>
      <udfield name="capability">30</udfield>
    </udfields>
    

    【讨论】:

    • @lcarpay 很高兴听到。如果这是您想要的,您应该使用左侧的复选标记接受答案。
    猜你喜欢
    • 1970-01-01
    • 2021-08-26
    • 2017-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多