在 ASP.NET MVC Web 应用程序中输出 RSS Feeds
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节点用来表示多个内容信息,如博客中的文章、论坛中的帖子。
2 <channel>
3 <title>channel标题</title>
4 <link>网页地址</link>
5 <description>channel描述</description>
6 <item>
7 <title>内容1标题</title>
8 <description>内容1描述</description>
9 <link>内容1链接</link>
10 </item>
11 <item>
12 <title>内容2标题</title>
13 <description>内容2描述</description>
14 <link>内容2链接</link> </item>
15 </channel>
16 </rss>
1. 用LINQ to XML生成类似上述的文档。
1.1 新建一个XDocument,添加根节点和相关属性描述。
2 new XDeclaration("1.0", "utf-8", "yes"), // XML文档声明
3 new XElement("rss", // 根节点
4 new XAttribute("version", "2.0"), // rss节点的属性
5 new XElement(channel // rss的子节点channel
6 ))); )));
1.2 处理channel节点和它的相关描述。
2 channel.Add(new XElement[]{
3 new XElement("title","Test"), // channel标题
4 new XElement("link","http://localhost"), // 页面链接
5 new XElement("description","Test RSS") // channel描述
6 });
1.3 往channel节点增加内容信息,rssFeedList是 List<RssFeed>类型的。由于item数量不固定,这里用了foreach将list中的每一个内容信息都加到channel。
2 {
3 XElement item = new XElement("item", new XElement[]{ // 生成一个新的item节点
4 new XElement("title",rssFeed.Title), // 为新的item节点添加子节点
5 new XElement("description",rssFeed.Description),
6 new XElement("link",rssFeed.Link),
7 new XElement("pubDate",rssFeed.PublishDate)
8 });
9 channel.Add(item); // 将新的item节点添加到channel中
10 }
2. 创建RssFeedResult类
我们写一个RssFeedResult类,继承自ActionResult,以便在ASP.NET MVC的controller中返回RSS。关于这部分内容可参考之前的一篇文章《让ASP.NET MVC页面返回不同类型的内容》。
2 {
3 List<RssFeed> Data { get; set; }
4
5 public RssFeedResult(List<RssFeed> data)
6 {
7 Data = data;
8 }
9
10 public override void ExecuteResult(ControllerContext context)
11 {
12 if (context == null)
13 {
14 throw new ArgumentNullException("context");
15 }
16
17 HttpResponseBase response = context.HttpContext.Response;
18 response.ContentType = "text/xml"; // 设置HTTP头中的ContentType
19 XDocument result= RssFeedHelper.GetRssFeed(Data); // 获取XML数据
20 response.Write(result.ToString()); // 将XML数据写入response中
21 }
22 }
3. 在controller中使用
我们只要在controller中调用RssFeedResult(rssFeedList)方法即可返回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);
}
示例下载 (Visual Studio 2010)
另外,还有一个工具ASP.NET RSS Toolkit,有需要的可以参考一下。
转载于:https://www.cnblogs.com/snowdream/archive/2010/08/29/publish-rss-feeds-in-aspnet-mvc-web-application.html
在 ASP.NET MVC Web 应用程序中输出 RSS Feeds相关推荐
- 如何使用recaptcha_在Spring MVC Web应用程序中使用reCaptcha
如何使用recaptcha CAPTCHA是一个程序,可以生成人类可以通过但计算机程序" 不能 "通过的测试并对其进行评分. 所采取的策略之一是向用户显示具有扭曲文本的图像,并且用 ...
- 在Spring MVC Web应用程序中添加社交登录:集成测试
我已经写了关于为使用Spring Social 1.1.0的应用程序编写单元测试的挑战,并为此提供了一种解决方案 . 尽管单元测试很有价值,但是它并不能真正告诉我们我们的应用程序是否正常运行. 这就是 ...
- 在Spring MVC Web应用程序中添加社交登录:单元测试
Spring Social 1.0具有spring-social-test模块,该模块为测试Connect实现和API绑定提供支持. 该模块已从Spring Social 1.1.0中删除,并由 Sp ...
- 在Spring MVC Web应用程序中使用reCaptcha
CAPTCHA是一种程序,可以生成人类可以通过的测试并对其进行评分,而计算机程序" 不能 "通过. 所采取的策略之一是向用户显示具有扭曲文本的图像,并且用户应在输入区域中书写文本. ...
- 使用.NET Core MVC Web应用程序中的ResponseCache属性处理缓存
HTTP响应的缓存意味着当发出HTTP请求时,服务器生成的响应由浏览器或服务器存储在某个地方,以便在对同一资源的连续HTTP请求中重复使用.实质上,我们正在存储生成的响应,并将该响应重用于后续请求一段 ...
- 一步步学会使用ASP.NET 4 WEB应用程序中使用URL Routing(翻译)
创建路由 路由就是将URL路径映射到具体的物理文件.若要将路由添加到网站中,请使用 RouteCollection.MapPageRoute 方法将它们添加到RouteTable类的静态Routes属 ...
- 集成spring mvc_向Spring MVC Web应用程序添加社交登录:集成测试
集成spring mvc 我已经写了关于为使用Spring Social 1.1.0的应用程序编写单元测试的挑战,并为此提供了一种解决方案 . 尽管单元测试很有价值,但它并不能真正告诉我们我们的应用程 ...
- 将社交登录添加到Spring MVC Web应用程序:配置
过去,用户使用用户名和密码组合登录. 尽管如今有些人仍然偏爱传统方式,但越来越多的用户希望使用其社交媒体帐户登录. 这就是使Spring Social(及其子项目)成为Spring项目组合有用的补充的 ...
- UkrGuru.SqlJson非常适合您的ASP.NET Core Web应用程序!
目录 背景 介绍 使用代码 服务设置 提供在页面中使用的DbService Index页 创建页面 编辑页面 详细信息页面 删除页面 在本技巧中,您将了解一种无需在ASP.NET Core Web应用 ...
- ASP.NET Core Web 应用程序系列(三)- 在ASP.NET Core中使用Autofac替换自带DI进行构造函数和属性的批量依赖注入(MVC当中应用)...
在上一章中主要和大家分享了在ASP.NET Core中如何使用Autofac替换自带DI进行构造函数的批量依赖注入,本章将和大家继续分享如何使之能够同时支持属性的批量依赖注入. 约定: 1.仓储层接口 ...
最新文章
- 程序员看了都会笑的20个瞬间...
- springboot 自动装配_Spring Boot 自动装配流程
- apache安全设置
- 关闭 VSCode 自动更新
- 拉杰尔安卓服务器注册上限,拉结尔多开养小号刷副本 用多多云手机离线能升级...
- Android 沙箱开源,Android Sandbox(沙箱)开源工具介绍
- 李宏毅机器学习课程1~~~Introduction Regression
- C++Primer学习笔记:第3章 字符串、向量和数组
- 超酷的OpenSource的Javascript Calendar控件
- C# 程序集 和 反射
- Hive建表与数据加载
- 35. 源码与 Tarball
- 【这很AI】斯坦福新人工智能系统曝光:用算法优化难民工作分配
- Timus 1104. Don’t Ask Woman about Her Age
- 淘宝客CMS,微信公众号,微信淘客机器人
- EXCEL VBA 正则表达式
- K-means聚类分析
- Java JDBC https://www.bilibili.com/video/BV1PE411i7CV?p=31spm_id_from=pageDriver
- cs224n学习笔记 03:Subword Models(fasttext附代码)
- 如何远程连接Linux系统服务器
热门文章
- java怎么建立socket_Java Socket编程如何建立两者关系
- 学习单片机入门需要准备什么?
- [渝粤教育] 云南大学 高等数学B(2) 参考 资料
- SpringBoot开发案例之拦截器注入Bean
- 相机拍照功能之权限和Android版本问题
- 【转】某女生编的c语言程序
- [转]微软:Visio 2010包括三大版本 功能对比
- SQLServer2005/2008新的高效分页方法-row_number()over函数的使用
- 总结: 1.函数 2.函数调用 3.函数的参数
- C# 5.0 Async函数的提示和技巧