0

我正在执行这个查询

select category "ROOT/category",
question "Category/question",
option1 "Category/option1"
from testDB2 for XML PATH ('ROOT') , ELEMENTS

目前数据库有三个条目,我得到的 xml 文件是这个

<ROOT>
  <ROOT>
    <category>maths</category>
  </ROOT>
  <Category>
    <question>2+2?</question>
    <option1>1</option1>
  </Category>
</ROOT>
<ROOT>
  <ROOT>
    <category>maths</category>
  </ROOT>
  <Category>
    <question>100*0</question>
    <option1>0</option1>
  </Category>
</ROOT>
<ROOT>
  <ROOT>
    <category>chemistry</category>
  </ROOT>
  <Category>
    <question>H2O?</question>
    <option1>water </option1>
  </Category>
</ROOT>

我不想要这个,我想要一个只有一个主父节点的文件,其余的作为它的子节点,每个子节点都可以是其他子节点的父节点,但是应该只有一个主父节点,在这种情况下是每一行是单独的父母,没有主要或单亲

我希望我能够正确地说出我的问题。谢谢

4

3 回答 3

2

尝试这样的事情:

select category, question, option1 from testdb2 for xml raw('Category'), elements, root('Categories')

对于 xml raw:这将为表中的每一行创建一个节点,每列都有一个该节点的属性 for xml raw('user'):这与 xml raw 相同,但您指定节点的名称xml raw('user') 元素:从属性视图切换到节点视图。每列都将是行中的一个节点 节点根('Users'):您可以使用它来命名您的父根

希望这可以帮助

于 2009-10-28T19:25:03.910 回答
0

我认为您想使用FOR XML AUTO 模式来塑造您的输出。

于 2009-10-28T19:26:07.570 回答
0

不是 100% 确定你真正想要的是什么,但是这个怎么样:

SELECT 
   category '@Name',
   question "Category/question",
   option1 "Category/option1"
FROM
   dbo.testDB2 
FOR XML PATH('Category'), ROOT('ROOT')

这是否更接近你想要的?如果我没记错的话(现在无法测试),这应该会给你类似的东西:

  <ROOT>
    <Category Name="maths">
      <question>100*0</question>
      <option1>0</option1>
    </Category>
    <Category Name="chemistry">
      <question>H2O?</question>
      <option1>water </option1>
    </Category>
  </ROOT>

如果没有 - 您能否发布一些示例数据行,以及您希望最终从您的 SELECT 中获得什么?

马克

于 2009-10-28T20:14:45.320 回答