【问题标题】:SQL Server for xml path add attributes and valuesSQL Server 为 xml 路径添加属性和值
【发布时间】:2014-08-11 06:58:59
【问题描述】:

我想创建一个包含属性和值的 xml 节点。

例子:

<mynode attr1="hello">world</mynode>

我明白了

SELECT 'hello' as '@attr1' 

至少创建了mynode,但是如何附加“世界”呢?

我试过了

SELECT 'world' as 'mynode/[@attr1=hello]' 

但是没用

【问题讨论】:

    标签: sql-server xml xpath


    【解决方案1】:

    这是一个基本的例子:

    SELECT ( SELECT 'White' AS Color1,
    'Blue' AS Color2,
    'Black' AS Color3,
    'Light' AS 'Color4/@Special',
    'Green' AS Color4,
    'Red' AS Color5
     FOR
     XML PATH('Colors'),
     TYPE
     ),
     ( SELECT 'Apple' AS Fruits1,
     'Pineapple' AS Fruits2,
     'Grapes' AS Fruits3,
     'Melon' AS Fruits4
     FOR
     XML PATH('Fruits'),
     TYPE
     )
     FOR XML PATH(''),
     ROOT('SampleXML')
    


    如需更多信息,请访问此页面SQL SERVER – Simple Example of Creating XML File Using T-SQL

    【讨论】:

      【解决方案2】:

      这对你有帮助

      SELECT TOP 1 
         'someValue' AS '@Attribute',
         'text' 
      FOR XML PATH('YourElement'), ROOT('Root')
      

      【讨论】:

        【解决方案3】:
        select 'hello' as [@attr1]
        , 'world'
        for xml path('mynode')
        

        【讨论】:

          【解决方案4】:

          以下脚本使您能够将数据库中所有表中的所有数据提取到单个 XML 文件中:

          SET NOCOUNT ON 
          DECLARE @CMD varchar(max) = ''
          
          DECLARE @AllTablesXML table (XMLData XML)
          SELECT @CMD += 
            ';SELECT '''+TABLE_NAME+''' as ''@name'' ,
              (
              SELECT * 
              FROM ' + QUOTENAME(T.TABLE_SCHEMA) + '.' + QUOTENAME(T.TABLE_NAME) +
              'FOR XML PATH (''Columns'') ,type ' + CHAR(10) + '
              )
             FOR XML PATH (''Table''),  type'
             FROM INFORMATION_SCHEMA.TABLES T
            --WHERE T.TABLE_NAME in  ('your List of tables') Uncomment if you need to extract specific tables
          
          INSERT INTO @AllTablesXML
          EXEC (@CMD) 
          
          
          SELECT XMLData 
          FROM @AllTablesXML
          FOR XML PATH (''), ROOT('Alltables') 
          

          【讨论】:

          • 有趣...我想如果数据库足够大,这会杀死/停止服务器。
          • 这对最大10GB数据的小型数据库有效,也取决于您的业务需求。当我需要将数据库导入第三方时,我使用了它,该第三方专门要求 XML 格式,以便将数据与他们的大数据解决方案合并为另一个来源。
          • 花了 15-20 分钟
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-28
          • 1970-01-01
          • 2021-08-26
          • 1970-01-01
          • 1970-01-01
          • 2014-03-23
          • 2017-01-30
          相关资源
          最近更新 更多