【问题标题】:Flowgear SQL Query XML ResultFlowgear SQL 查询 XML 结果
【发布时间】:2016-01-26 15:17:24
【问题描述】:

我有一个带有简单 SELECT 语句、FOR XML AUTO、ELEMENTS 的 SQL 查询。

这是 SQL Management Studio 中的示例文本结果:

> XML_F52E2B61-18A1-11d1-B105-00805F49916B
> -------------------------------------------------------------------------------- <row><CompanyID>0</CompanyID><Company>0  
> </Company><GlCode>00-1010</GlCode><GlYear>2009</GlYear><BeginYearBalance>0.00</BeginYearBalance><ClosingBalPer1>50251640.00</ClosingBalPer1><ClosingBalPer2>45141985.00</ClosingBalPer2><ClosingBalPer3>43603485.00</C
> lPer7><ClosingBalPer8>0.00</ClosingBalPer8><ClosingBalPer9>0.00</ClosingBalPer9><ClosingBalPer10>0.00</ClosingBalPer10><ClosingBalPer11>0.00</ClosingBalPer11><ClosingBalPer12>0.00</ClosingBalPer12><ClosingBalPer13>0.00</ClosingBalPer13><ClosingBalPer14>0.0
> BalPer1><ClosingBalPer2>20000.00</ClosingBalPer2><ClosingBalPer3>0.00</ClosingBalPer3><ClosingBalPer4>0.00</ClosingBalPer4><ClosingBalPer5>0.00</ClosingBalPer5><ClosingBalPer6>0.00</ClosingBalPer6><ClosingBalPer7>0.00</ClosingBalPer7><ClosingBalPer8>0.00</
> alPer14>

它为每条记录创建熟悉的&lt;row&gt; 元素结构,每列都有一个元素。

但是,这是我在 Flowgear 中运行节点时返回的结果:

<Result>
  <Table>
    <XML_F52E2B61-18A1-11d1-B105-00805F49916B>&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1010&lt;/GlCode&gt;&lt;GlYear&gt;2009&lt;/GlYear&gt;&lt;BeginYearBalance&gt;0.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;50251640.00&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;45141985.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;43603485.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;37602854.06&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;30477670.97&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;27131030.91&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;26489572.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;24508174.38&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;25107606.36&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;24838327.11&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;28456828.16&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;3205488.90&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;3205488.90&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;3205488.90&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1010&lt;/GlCode&gt;&lt;GlYear&gt;2010&lt;/GlYear&gt;&lt;BeginYearBalance&gt;3205488.90&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;69904850.41&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;70035845.09&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;69751854.18&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;76699659.70&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;64868593.99&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;63343067.84&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;67160186.41&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;66030723.36&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;67336905.21&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;67363017.56&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;67275039.96&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;64310025.92&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;64310025.92&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;64310025.92&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1010&lt;/GlCode&gt;&lt;GlYear&gt;2011&lt;/GlYear&gt;&lt;BeginYearBalance&gt;64310025.92&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;63333898.71&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;63334486.71&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;0.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;0.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;0.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;0.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;0.00&lt;/ClosingBa</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
  </Table>
  <Table>
    <XML_F52E2B61-18A1-11d1-B105-00805F49916B>lPer7&gt;&lt;ClosingBalPer8&gt;0.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;0.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;0.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;0.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;0.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;0.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;0.00&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1020&lt;/GlCode&gt;&lt;GlYear&gt;2009&lt;/GlYear&gt;&lt;BeginYearBalance&gt;0.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;20000.00&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;20000.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;20000.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;20000.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;20000.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;20000.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;20000.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;20000.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;20000.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;20000.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;20000.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;20000.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;20000.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;20000.00&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1020&lt;/GlCode&gt;&lt;GlYear&gt;2010&lt;/GlYear&gt;&lt;BeginYearBalance&gt;20000.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;20000.00&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;20000.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;20000.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;20000.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;20000.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;20000.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;20000.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;20000.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;20000.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;20000.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;20000.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;20000.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;20000.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;20000.00&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1020&lt;/GlCode&gt;&lt;GlYear&gt;2011&lt;/GlYear&gt;&lt;BeginYearBalance&gt;20000.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;20000.00&lt;/Closing</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
  </Table>
  <Table>
    <XML_F52E2B61-18A1-11d1-B105-00805F49916B>BalPer1&gt;&lt;ClosingBalPer2&gt;20000.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;0.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;0.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;0.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;0.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;0.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;0.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;0.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;0.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;0.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;0.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;0.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;0.00&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1030&lt;/GlCode&gt;&lt;GlYear&gt;2009&lt;/GlYear&gt;&lt;BeginYearBalance&gt;0.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;15000.00&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;30000.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;30000.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;30000.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;30000.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;30000.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;30000.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;30000.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;30000.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;30000.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;30000.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;30000.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;30000.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;30000.00&lt;/ClosingBalPer14&gt;&lt;ClosingBalPer15&gt;0.00&lt;/ClosingBalPer15&gt;&lt;/row&gt;&lt;row&gt;&lt;CompanyID&gt;0&lt;/CompanyID&gt;&lt;Company&gt;0   &lt;/Company&gt;&lt;GlCode&gt;00-1030&lt;/GlCode&gt;&lt;GlYear&gt;2010&lt;/GlYear&gt;&lt;BeginYearBalance&gt;30000.00&lt;/BeginYearBalance&gt;&lt;ClosingBalPer1&gt;30000.00&lt;/ClosingBalPer1&gt;&lt;ClosingBalPer2&gt;30000.00&lt;/ClosingBalPer2&gt;&lt;ClosingBalPer3&gt;30000.00&lt;/ClosingBalPer3&gt;&lt;ClosingBalPer4&gt;30000.00&lt;/ClosingBalPer4&gt;&lt;ClosingBalPer5&gt;30000.00&lt;/ClosingBalPer5&gt;&lt;ClosingBalPer6&gt;30000.00&lt;/ClosingBalPer6&gt;&lt;ClosingBalPer7&gt;30000.00&lt;/ClosingBalPer7&gt;&lt;ClosingBalPer8&gt;30000.00&lt;/ClosingBalPer8&gt;&lt;ClosingBalPer9&gt;30000.00&lt;/ClosingBalPer9&gt;&lt;ClosingBalPer10&gt;30000.00&lt;/ClosingBalPer10&gt;&lt;ClosingBalPer11&gt;30000.00&lt;/ClosingBalPer11&gt;&lt;ClosingBalPer12&gt;30000.00&lt;/ClosingBalPer12&gt;&lt;ClosingBalPer13&gt;30000.00&lt;/ClosingBalPer13&gt;&lt;ClosingBalPer14&gt;30000.00&lt;/ClosingB</XML_F52E2B61-18A1-11d1-B105-00805F49916B>
  </Table>

Node 进一步将结果拆分为看似固定长度的&lt;Table&gt; 元素。其中 2nd Table 节点包含来自 1st Table 元素的文本余额。

这会导致非常不同的 XML,我不知道如何在下一个 Flowgear 节点(我的 XSLT 转换)中处理这个看似非结构化的 XML

请帮助...为什么会发生这种情况,我怎样才能让它停止?

【问题讨论】:

    标签: flowgear


    【解决方案1】:

    当您使用 XML 查询时,您需要勾选节点上的 XmlQuery 属性。

    SQL 为 XML 查询返回一个非常不同的响应,需要告诉 Flowgear 相应地解析它。

    请参阅http://developers.flowgear.net/kb/Node:SQL_Query 了解更多详情。

    【讨论】:

      猜你喜欢
      • 2014-07-10
      • 2018-09-22
      • 1970-01-01
      • 2013-03-25
      • 2020-06-02
      • 1970-01-01
      • 1970-01-01
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多