sql - 对于 XML 路径 : How to keep Attribute and Value in the same node

标签 sql xml for-xml-path

我在使用FOR XML PATH时遇到一些问题。我的情况是:

我运行了如下脚本,属性CCYAMOUNT的值合并到同一个节点:

Script 1:

SELECT 'USD' AS 'Amount/@Ccy',
       123000 AS Amount,
       'Foo' AS Foo
FOR XML PATH('root'), TYPE;

结果 1:root 节点中只有 1 个 AMOUNT 节点

<root>
  <Amount Ccy="USD">123000</Amount>
  <Foo>Foo</Foo>
</root>

Script 2: I change the order of Foo to the middle, and the result is wrong

SELECT 'USD' AS 'Amount/@Ccy',
       'Foo' AS Foo,
       123000 AS Amount
FOR XML PATH('root'), TYPE;

结果2:根节点中有2个节点AMOUNT

<root>
  <Amount Ccy="USD" />
  <Foo>Foo</Foo>
  <Amount>123000</Amount>
</root>

所以我的问题是:如何将它们保持在同一个节点而不将它们放在一起。谢谢

最佳答案

这是为了工作......

引擎沿着列列表向下移动,打开一个元素,填充嵌套元素,找到一个新元素(哦!我必须关闭最后一个元素!)...等等。

属性必须位于包含元素之前。顺序很重要!

尝试一下:

--相同的名称:你可能会感到惊讶

SELECT 1 AS [SomeElement]
      ,2 AS [SomeElement]
FOR XML PATH('SomeTag'),ROOT('root');

--之间的不同名称

SELECT 1 AS [SomeElement]
      ,'in between' AS [SomeOther]
      ,2 AS [SomeElement]
FOR XML PATH('SomeTag'),ROOT('root');

--不同的元素 - 嗯 - 不存在(您也可以使用 NULL)

SELECT 1 AS [SomeElement]
      ,''
      ,2 AS [SomeElement]
FOR XML PATH('SomeTag'),ROOT('root');

--你认为这里会出现什么?

SELECT 'blah' AS [SomeElement/@TheAttribute]
      ,1 AS [SomeElement]
      ,2 AS [SomeElement]
FOR XML PATH('SomeTag'),ROOT('root');

--...这里呢?

SELECT 'blah' AS [SomeElement/@TheAttribute]
      ,1 AS [SomeElement]
      ,''
      ,'blub' AS [SomeElement/@TheAttribute]
      ,2 AS [SomeElement]
FOR XML PATH('SomeTag'),ROOT('root');

--最后,这是你的例子(原则上)

SELECT 1 AS [SomeElement]
      ,'in between' AS [SomeOther]
      ,'blub' AS [SomeElement/@TheAttribute]
FOR XML PATH('SomeTag'),ROOT('root');

--并且-只是为了好玩! - 也试试这个

SELECT 1 AS [SomeElement]
      ,NULL
      ,'blub' AS [SomeElement/@TheAttribute]
FOR XML PATH('SomeTag'),ROOT('root');

关于sql - 对于 XML 路径 : How to keep Attribute and Value in the same node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50306483/

相关文章:

sql - 如何在sql中按月年获取总和?

java - java 中的 SAX 解析器和整数值

java - 在 styles.xml 文件中为所有按钮声明一个通用的 onClick 属性

java - xml 解析 - Java 中的 xpath 说明

sql - 我想以分层形式生成 XML 文件

xml - 对于 XML 路径和 xsi :nil attributes

java - 什么是预编译 SQL 语句?

mysql - 单表之间一对一的SQL

python - 通过其相邻值推导 html 元素

c# - 使用 TableAdapter 重新加载数据