使用linq to xml 快速创建自己的Rss
首先我们创建一个新窗体,这里以我的网站为例,我们起名叫Rss.aspx
创建完成后,如果Rss数据源是XML实际文档,就跳过下面一步,如果Rss数据源是aspx文件
请在创建完新页面后切换到源视图
保留这一行:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Rss.aspx.cs" Inherits="Rss" %>
其余的html代码全部删除
然后在cs里创建方法createRss()
具体看代码和注释:
public void createRss()
{
//首先从数据库里读出所需要的数据
XXXXContext bd = new XXXXContext();
var sq = from p in bd.news orderby p.ID descending select new { p.ID, p.title,p.cont, p.in_date,p.n_type };
//开始创建xml 对于Rss的规范我这里不再啰嗦了,不明白的可以去网上查一下
//下面这一部分为xml里的声明部分,从foreach开始循环item,把sq的数据循环写入xml
XElement contacts = new XElement("rss", new XAttribute("version", "2.0"),
new XElement("channel",
new XElement("title", "半途的Rss"),
new XElement("link", "http://www.bantool.cn"),
new XElement("description", "C#,linq,vs2008"),
new XElement("language", "zh_cn"),
new XElement("copyright", "Copyright 2008 bantool"),
new XElement("webMaster", "ziie@tom.com")));
//这里开始循环写数据
foreach (var p in sq)
{
contacts.Element("channel").Add(new XElement("item",
new XElement("title", p.title),
new XElement("link", "http://www.bantool.cn/news" + p.ID + ".bantool"),
new XElement("description", p.cont),
new XElement("category", p.n_type),
new XElement("pubDate", p.in_date)));
}
//这里开始操作xml是写入具体的xml文件还是直接输出
//如果是写入文件的话用这个
//contacts.Save("文件路径");
//如果是输出的諙,
//先设好输出的类型"text/xml"
Response.ContentType = "text/xml";
using (XmlWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
//用contacts的WriteTo方法来写
contacts.WriteTo(writer);
//这样就OK啦
}
好了,这个样子就完成了,看我们的linq多么强大!呵呵
如果有错误还请大家指正,不明白的地方请提出来大家讨论
演示地址:http://www.bantool.cn/Rss.aspx