在 ASP.NET MVC Web 应用程序中输出 RSS格式数据
来源:互联网 发布:苏沉船知乎 编辑:程序博客网 时间:2024/06/03 20:12
RSS全称Really Simple Syndication。一些更新频率较高的网站可以通过RSS让订阅者快速获取更新信息。RSS文档需遵守XML规范的,其中必需包含标题、链接、描述信息,还可以包含发布时间、最后更新时间等信息。
本文将介绍通过LINQ to XML生成XML文档,并在ASP.NET MVC Web应用程序中输出。
在生成RSS文档前,先简单了解一下RSS的结构。根节点rss下有channel节点,channel节点的一些子节点(title,link,description)包含了该RSS的部分描述信息。channel下可包含多个item节点用来表示多个内容信息,如博客中的文章、论坛中的帖子。
<rss version="2.0"> <channel> <title>channel标题</title> <link>网页地址</link> <description>channel描述</description> <item> <title>内容1标题</title> <description>内容1描述</description> <link>内容1链接</link> </item> <item> <title>内容2标题</title> <description>内容2描述</description> <link>内容2链接</link> </item> </channel></rss>
新建一个XDocument,添加根节点和相关属性描述。
XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), // XML文档声明 new XElement("rss", // 根节点 new XAttribute("version", "2.0"), // rss节点的属性 new XElement(channel // rss的子节点channel ))); )));处理channel节点和它的相关描述。
XElement channel = new XElement("channel"); // channel节点channel.Add(new XElement[]{ new XElement("title","Test"), // channel标题 new XElement("link","http://localhost"), // 页面链接 new XElement("description","Test RSS") // channel描述});
往channel节点增加内容信息,rssFeedList是 List<RssFeed>类型的。由于item数量不固定,这里用了foreach将list中的每一个内容信息都加到channel。
foreach (var rssFeed in rssFeedList) // 对rssFeed集合中的每个元素进行处理{ XElement item = new XElement("item", new XElement[]{ // 生成一个新的item节点 new XElement("title",rssFeed.Title), // 为新的item节点添加子节点 new XElement("description",rssFeed.Description), new XElement("link",rssFeed.Link), new XElement("pubDate",rssFeed.PublishDate) }); channel.Add(item); // 将新的item节点添加到channel中}
创建RssFeedResult类
我们写一个RssFeedResult类,继承自ActionResult,以便在ASP.NET MVC的controller中返回RSS。关于这部分内容可参考之前的一篇文章《让ASP.NET MVC页面返回不同类型的内容》。
public class RssFeedResult : ActionResult{ List<RssFeed> Data { get; set; } public RssFeedResult(List<RssFeed> data) { Data = data; } public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } HttpResponseBase response = context.HttpContext.Response; response.ContentType = "text/xml"; // 设置HTTP头中的ContentType XDocument result= RssFeedHelper.GetRssFeed(Data); // 获取XML数据 response.Write(result.ToString()); // 将XML数据写入response中 }}最后,我们只要在controller中调用RssFeedResult(rssFeedList)方法即可返回RSS页面了。
public RssFeedResult Rss(){ // 添加2个测试用的数据 RssFeed r1 = new RssFeed { Description = "Test1", Link = "http://localhost/1", Title = "Test1", PublishDate = DateTime.Now }; RssFeed r2 = new RssFeed { Description = "Test2", Link = "http://localhost/2", Title = "Test2", PublishDate = DateTime.Now }; List<RssFeed> rssFeedList = new List<RssFeed>(); rssFeedList.Add(r1); rssFeedList.Add(r2); // 返回RSS return new RssFeedResult(rssFeedList);}原文转载地址
0 0
- 在 ASP.NET MVC Web 应用程序中输出 RSS格式数据
- Asp.net(C#) 输出Xml格式数据---Rss生成
- asp.net输出rss
- MVC Asp.Net Mvc在cshtml中输出html
- 在 ASP.NET 中缓存应用程序数据
- asp.net mvc 中输出利用FCKeditor保存在数据库中数据
- .net mvc 在 cshtml 中输出 html 格式问题
- .net mvc 在 cshtml 中输出 html 格式问题
- 在ASP.NET中将数据直接输出成Excel格式
- 在asp.net站点中使用rss
- 在Asp.net MVC中使用Rdlc输出文件
- 利用asp.net输出RSS
- 在 ASP.NET 2.0 中创建 Web 应用程序主题
- 在 ASP.NET 2.0 中创建 Web 应用程序主题【微软】
- 在 ASP.NET 2.0 中创建 Web 应用程序主题
- 在 ASP.NET 2.0 中创建 Web 应用程序主题
- 在 ASP.NET 2.0 中创建 Web 应用程序主题【微软】
- Asp.Net在Web应用程序中执行计划任务(多线程)
- 深度学习在健康医疗领域的应用综述
- ConcurrentHashMap中并发级别,桶内hash表的长度,扩容门槛的确定
- String中Comparable的compareTo使用及释义
- 6 Difference Between HashMap And HashTable
- 图片格式转换-在线
- 在 ASP.NET MVC Web 应用程序中输出 RSS格式数据
- R语言规范化 scale()
- PopupWindow 可以指定弹窗的位置以及背景色等特性
- java中的数组
- Broadcast
- Linux高性能服务器架构
- 8.2 喀迈拉(no.31~no.40)
- 13、canvas标签之像素
- 浅谈虚拟串口技术应用