【问题标题】:Not able to get desired output while generating xml files from SQL query from SQL Server从 SQL Server 的 SQL 查询生成 xml 文件时无法获得所需的输出
【发布时间】:2009-10-28 19:08:11
【问题描述】:

我正在执行这个查询

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>

我不想要这个,我想要一个只有一个主父节点的文件,其余的作为它的子节点,每个子节点都可以是其他子节点的父节点,但应该只有一个主父节点,在这个如果每一行都是单独的父级,并且没有主父级或单父级

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

【问题讨论】:

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

标签: sql sql-server xml for-xml


【解决方案1】:

试试这样的:

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

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

希望对你有帮助

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      不是 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 中得到什么??

      马克

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多