sql - 需要从 SQL 生成以下格式的 XML

标签 sql sql-server xml

我在 SQL Server 数据库中有一个表,我正在使用此查询从该表生成 XML。

SELECT OrderNumber, CustomerID, ITEM
FROM OrderHeader
FOR XML RAW('Order'), ELEMENTS, ROOT('Orders')

我得到这样的 XML:

<Orders>
<Order>
    <OrderNumber>SO101</OrderNumber>
    <CustomerID>1</CustomerID>
            <Item>item 1</Item>
</Order>
<Order>
    <OrderNumber>SO102</OrderNumber>
    <CustomerID>1</CustomerID>
            <Item>item 2</Item>
</Order>
</Orders>

但我需要生成以下格式的 XML。

<Orders>
<Order OrderNumber= 'SO101'>        
    <CustomerID>1</CustomerID>
            <Item>item 1</Item>
</Order>
  <Order OrderNumber= 'SO102'>      
    <CustomerID>1</CustomerID>
            <Item>item 2</Item>
</Order>
</Orders>

即订单号列需要显示为订单节点的属性。

我怎样才能实现这个目标?

最佳答案

我想您会发现 XML RAW 会限制您的选择。

尝试使用 XML PATH,如下所示:

SELECT OrderNumber AS @Id, CustomerID, ITEM
FROM OrderHeader
FOR XML PATH('Order'), ELEMENTS, ROOT('Orders')

我想看看这是否有效,目前也在尝试改进我的 XML。

关于sql - 需要从 SQL 生成以下格式的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11360802/

相关文章:

c# - Linq to XML 的条件输出

php - 如何计算 XML 文件中两个节点在一个元素中出现的次数?

sql - 调试发现错误 "Error converting data type varchar to real"

java - 从 jTable 更新 SQL Server 表

javascript - 此函数在页面加载时运行,但只发生警报 1 和 2,而不是警报 3。阻止警报 3 执行的错误是什么?

mysql - 使用 order by 的 SQL 查询运行速度非常慢

sql-server - 计算选择查询返回的行数

android - nestedscrollview 大高度图像不显示在 ImageView android

mysql - 防止 PetaPoco 将变量识别为输入参数

mysql - 选择所有数据,但在选择所有数据时对某些字段使用新名称