我正在执行此查询
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>
我不想要这个,我想要一个只有一个主要父节点的文件,其余的作为它的子节点,每个子节点可以是其他子节点的父节点,但是应该只有一个主节点父节点case每行是一个单独的父级,没有主要或单个父级
我希望我能够正确地说出我的问题。谢谢
答案 0 :(得分:2)
尝试这样的事情:
select category,
question,
option1
from testdb2
for xml raw('Category'), elements, root('Categories')
for xml raw:这将为表中的每一行创建一个节点,每列都是该节点的一个属性 for xml raw('user'):这与xml raw相同,但是您指定节点的名称 对于xml raw('user')元素:从属性视图切换到节点视图。每列都是行节点中的节点 root('Users'):您可以使用它来命名您的父根
希望这会有所帮助
答案 1 :(得分:0)
我认为你想使用FOR XML AUTO mode来塑造你的输出。
答案 2 :(得分: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中获得的数据?
马克