使用C#创建XML文档,SQL Server作为数据源

时间:2009-07-27 09:02:15

标签: c# xml feeds

我需要从我的SQL Server数据库创建一个xml提要

我已经看到它以许多不同的方式完成,例如:http://www.primaryobjects.com/CMS/Article67.aspx

然而,这似乎是错误的..

最简单的方法是什么?

我有一个可以从BTW工作的XSD文档。

3 个答案:

答案 0 :(得分:1)

就我个人而言,我发现LINQ to SQL + LINQ to XML工作得非常好,只要结果足够小以适应内存的舒适性(即它对流式传输解决方案不太好)。

例如,我有一个(非常大的)语句,它将我数据库中的项目转换为RSS提要。它基本上是一种声明式方法,并且效果很好。它是这样的:

XDocument doc = new XDocument(
    new XDeclaration("1.0", "UTF-8", "yes"),
    new XElement("rss",
        new XAttribute("version", "2.0"),
        new XElement("channel",

            new { title="C# in Depth news",
                  link ="http://csharpindepth.com/News.aspx",
                  description = "C# in Depth news items",
                  language = "en-gb",
                  generator = "LINQ",
                  docs = "http://blogs.law.harvard.edu/tech/rss",
                  pubDate = DateTimeOffset.UtcNow.ToString
                      (Rfc822Format, CultureInfo.InvariantCulture),
                  lastBuiltDate = items.First().CreatedDate.ToString
                      (Rfc822Format, CultureInfo.InvariantCulture),
            }.AsXElements(),
            items.Select(item =>
                new XElement("item",
                    new { title=item.Title, 
                          link=string.Format(LinkFormat, item.NewsItemID), 
                          description=item.Summary,
                          author="skeet@pobox.com",
                          pubDate = item.CreatedDate.ToString
                              (Rfc822Format, CultureInfo.InvariantCulture)
                    }.AsXElements()
                )
            )
        )
    )
);

使用了一些扩展方法,我必须将匿名类型转换为XElements - 它可以在MiscUtil中使用,并且显而易见。

(是的,我应该有一种方法将日期转换为Rfc822格式...)

答案 1 :(得分:0)

对于创建rss feed我更喜欢http://www.rssdotnet.com/,这些类工作得非常好,因为你正在使用对象,如果你有某种DAL,它可以很容易地生成你的输出。

答案 2 :(得分:0)

您可以始终直接从数据库输出XML,然后相应地进行操作以添加正确的根节点和属性。这在SQL Server 2005及更高版本中非常简单。

This answer提供了一些您拥有的选项的详细信息。