如何在sql server 2005中向xml节点添加属性

时间:2011-12-07 19:44:55

标签: sql xml sql-server-2005

如果我想在根元素记录中添加属性,可以从sql端执行此操作吗?

SELECT top 1 'text' as nodeA
                from test as z
FOR XML AUTO, ELEMENTS, root('record')

我想生成像这样的xml:

 <Root attribute="value">
     <z>
         <NodeA>text</NodeA>
     </z>
 </Root>

3 个答案:

答案 0 :(得分:8)

使用新的FOR XML PATH语法:

SELECT TOP 1 
   'someValue' AS '@Attribute',
   'text' as 'z/NodeA'
FROM dbo.Test
WHERE....
FOR XML PATH('YourElement'), ROOT('Root')

这会产生类似

的东西
<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

在这里阅读更多相关信息:

答案 1 :(得分:1)

您的示例没有按要求执行操作。

请求:

<Root attribute="someValue">
   <YourElement>
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

你的回答:

<Root>
   <YourElement Attribute="someValue">
      <z>
         <NodeA>text</NodeA>
      </z>
   </YourElement>
</Root>

我正在做类似的事情,并在保存之前使用PowerShell擦除文件:

擦洗原因1:https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

擦洗原因2:这个

答案 2 :(得分:0)

SELECT 
      'someValue' AS '@Attribute',
      (SELECT TOP 1 
              'text' as 'z/NodeA'
               FROM dbo.Test
               WHERE....
               FOR XML PATH('YourElement')
       ) 
FOR XML PATH('ROOT');

它应该创建一个带有ROOT的属性和内部列表的xml。