Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server的SQL查询生成xml文件时无法获得所需的输出_Sql_Sql Server_Xml_For Xml - Fatal编程技术网

从SQL Server的SQL查询生成xml文件时无法获得所需的输出

从SQL Server的SQL查询生成xml文件时无法获得所需的输出,sql,sql-server,xml,for-xml,Sql,Sql Server,Xml,For Xml,我正在执行这个查询 select category "ROOT/category", question "Category/question", option1 "Category/option1" from testDB2 for XML PATH ('ROOT') , ELEMENTS 目前数据库有三个条目,我得到的xml文件如下 <ROOT> <ROOT> <category>maths</category> </RO

我正在执行这个查询

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>

数学
2+2?
1.
数学
100*0
0
化学
H2O?
水
我不想要这个,我想要一个只有一个主父节点的文件,其余的作为它的子节点,每个子节点都可以是其他子节点的父节点,但是应该只有一个主父节点,在这种情况下,每一行都是一个单独的父节点,没有主节点或单个父节点


我希望我能正确地回答我的问题。谢谢

试试这样的方法:


选择类别,
问题:,
选择1
来自testdb2
对于xml原始('Category')、元素、根('Categories'))

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


希望这对您有所帮助

我认为您希望使用来塑造您的输出。

不是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>

100*0
0
H2O?
水
如果没有-你能发布一些数据样本行,以及你希望从你的选择中得到什么


Marc

您好,似乎有问题,我对问题的完整描述没有发布。很抱歉,我无法确定如何将我从该查询中获得的结果发布在此页面上,如果您能找出我遇到的问题,那将非常好,否则,我会要求人们删除这篇文章,这样我就可以用不同的方式再次讲述它。您可以使用XML上的“代码示例”按钮,使它在将来的问答中出现。