How to add attributes to xml nodes in sql server 2005

前端 未结 3 1582
北恋
北恋 2021-01-13 14:41

If i wanted to add an attribute to the root element record, can i do this from the sql side?

SELECT top 1 \'text\' as nodeA
                from test as z
FO         


        
相关标签:
3条回答
  • 2021-01-13 14:54

    Use the new FOR XML PATH syntax:

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

    This would give something like

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

    Read more about it here:

    • Simple Example of Creating XML File Using T-SQL
    • Using XML Serialization with SQL's FOR XML PATH
    0 讨论(0)
  • 2021-01-13 15:05

    Your example is not doing what is requested.

    request:

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

    your answer:

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

    I'm doing something similar and using PowerShell to scrub the file before saving it:

    scrub reason 1: https://connect.microsoft.com/SQLServer/feedback/details/265956/suppress-namespace-attributes-in-nested-select-for-xml-statements

    scrub reason 2: THIS

    0 讨论(0)
  • 2021-01-13 15:05
    SELECT 
          'someValue' AS '@Attribute',
          (SELECT TOP 1 
                  'text' as 'z/NodeA'
                   FROM dbo.Test
                   WHERE....
                   FOR XML PATH('YourElement')
           ) 
    FOR XML PATH('ROOT');
    

    It should create a xml with ROOT containg attribute and list of ... inside.

    0 讨论(0)
提交回复
热议问题