【问题标题】:Best method to populate XML from SQL query in ASP.NET?从 ASP.NET 中的 SQL 查询填充 XML 的最佳方法?
【发布时间】:2009-03-20 17:33:38
【问题描述】:

我需要创建一个服务,该服务将返回包含来自数据库的数据的 XML。所以我正在考虑使用一个 ASHX 来接受日期范围之类的内容并返回一个 XML 文件。我已经处理了从 SQL Server 中提取数据并填充到数据网格中以进行可视化显示的页面,但从未处理过用于交付的 XML,最好的方法是什么?此外,如果 ASHX 和 POST 不是最好的交付方式,请告诉我...谢谢!

编辑:这些答案很好,为我指明了正确的方向。我还应该提到,XML 格式已经确定,所以我不能使用任何自动生成的格式。

【问题讨论】:

    标签: asp.net sql xml


    【解决方案1】:

    将 linq2sql 与 XElement 类结合起来,大致如下:

    var xmlContacts =
          new XElement("contacts",
             (from c in context.Contacts
             select new XElement("contact",
                new XElement
                {
                   new XElement("name", c.Name), 
                   new XElement("phone", c.Phone),
                   new XElement("postal", c.Postal)
                )
             )
             ).ToArray()
          )
       );
    

    Linq2sql 将在对数据库的一次调用中检索数据,并且 XML 的处理将在业务服务器上完成。这样可以更好地分担负载,因为您不需要 sql 服务器来完成所有工作。

    【讨论】:

    【解决方案2】:

    你试过DataSet.WriteXml()吗?

    您可以将其作为 Web 服务调用的输出。

    【讨论】:

      【解决方案3】:

      Sql Server 2005 及更高版本有一个“FOR XML AUTO”命令,可以为您将记录集转换为 XML。然后你只需要从你的 ASHX 返回一个字符串。

      【讨论】:

        【解决方案4】:

        从 SQL Server 2000 开始,您可以将查询结果作为 XML 返回。要对它们进行绝对控制,请使用“FOR XML EXPLICIT”命令。你可以使用任何你想要的格式。

        http://msdn.microsoft.com/en-us/library/ms189068.aspx

        这就像将结果写入原始输出一样简单。对于附加点,您可以将结果集返回到 XPathDocument,通过 XSL 转换传递它,然后以您选择的任何格式发送结果(HTML 与 XML 可能在单击按钮时)。

        【讨论】:

          【解决方案5】:

          您可以将其获取到数据表中,然后调用 myTable.WriteXML()

          如果您使用数据库结果填充类,则将可序列化属性添加到类的标题中,并使用 XMLSerializer

          【讨论】:

            【解决方案6】:

            将自动生成的格式转换为指定的格式是 xslt 的工作。只需找到一种通过 xslt 过滤器运行工具输出的方法即可。

            Oracle 有一个出色的产品来完成这项工作 - oracle XDK。但据我所知,这是一个 java 的东西,而不是 ASP。

            例如,这个 XHTML http://www.anbg.gov.au/abrs/online-resources/flora/stddisplay.xsql?pnid=2524

            是从这个由oracle生成的XML自动生成的 http://www.anbg.gov.au/abrs/online-resources/flora/stddisplay.xsql?pnid=2524&xml-stylesheet=none

            当然,您不是在使用 XHTML,而是在使用其他一些 XML 格式。但是 XSLT 可以胜任。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2012-08-30
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2010-10-05
              • 2023-04-06
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多