将XML输出包装为子元素?

时间:2017-01-18 19:49:58

标签: sql-server xml

例如,我有以下SQL返回Xml代码<B><A Value="1"/></B>

select
        1 [@Value]
    for xml path ('A'), root ('B')

现在我想将其包装在<D><C>......</C></D>中,以便预期结果为<D><C><X><B><A Value="1"/></B></X></C></D>。我可以通过将sql包装为子查询来实现。

select
    (select
            1 [@Value]
        for xml path ('A'), root ('B'), type)
for xml path ('C'), root('D')

这是一种没有子查询的方法吗?

1 个答案:

答案 0 :(得分:1)

在您的情况下,可以这样做:

SELECT  1 [X/B/A/@Value]
FOR XML PATH('C'), ROOT ('D')

结果

<D>
  <C>
    <X>
      <B>
        <A Value="1" />
      </B>
    </X>
  </C>
</D>

但是有(经常)情况,你需要在子查询中包装它。