myrss.cs

来自「该项目中对 SQLHelper 类进行了简单封装」· CS 代码 · 共 111 行

CS
111
字号
/* 
 * MyRss.cs @Microsoft Visual Studio 2008 <.NET Framework 3.5>
 * AfritXia
 * 2008-01-28
 * 
 * Copyright(c) http://www.AfritXia.NET/
 * 
 */

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;

using NET.AfritXia.MyHome.HomeStart.CodeLand.ServiceProxy;
using NET.AfritXia.MyHome.Model.Message;
using NET.AfritXia.RssFoundation;

namespace NET.AfritXia.MyHome.HomeStart.CodeLand
{
	/// <summary>
	/// 自定义 RSS 生成类
	/// </summary>
	public sealed class MyRss
	{
		// Rss 工厂类
		private static RssFactory g_myRssFactory = null;

		#region 类构造器
		/// <summary>
		/// 类静态构造器
		/// </summary>
		static MyRss()
		{
			lock (typeof(MyRss))
			{
				// 创建新实例
				g_myRssFactory = new RssFactory();
				// 设置 item 标记转换器
				g_myRssFactory.RssItemTagConverter = new MyRssItemTagConverter();
			}
		}
		#endregion

		/// <summary>
		/// 构建 RSS 内容
		/// </summary>
		/// <param name="outputStream"></param>
		public static void BuildRssContent(Stream outputStream)
		{
			if (outputStream == null)
				return;

			int allRecordCount = 0;

			// 获取文章列表
			IList<Article> articleList = ServiceProxyFactory.CreateArticleService().GetArticleList(2, 0, 20, out allRecordCount);

			if (articleList == null || articleList.Count <= 0)
				return;

			// 创建 RSS 实例
			Rss rssInstance = g_myRssFactory.Create();

			// title
			rssInstance.Root.Channel.Title = "My Article";
			// link
			rssInstance.Root.Channel.Link = "http://www.afritxia.net/HomeStart/ArticleList.aspx";
			// description
			rssInstance.Root.Channel.Description = "我的文章";

			// 添加文章列表到 rss
			rssInstance.AddDataItems(articleList);

			// 写出 XML 内容
			rssInstance.WriteXmlContent(outputStream);
		}

		/// <summary>
		/// 自定义 item 转换器类
		/// </summary>
		private class MyRssItemTagConverter : IRssItemTagConverter
		{
			#region IRssItemTagConverter Members
			public RssItemTag Convert(object srcObj)
			{
				Article article = srcObj as Article;

				if (article == null)
					return null;

				
				RssItemTag item = new RssItemTag();

				// title
				item.Title = article.Title;
				// author
				item.Author = article.PostUser;
				// description
				item.Description = article.Summary;
				// pubDate
				item.PubDate = article.PostTime;
				// link
				item.Link = "http://www.afritxia.net/HomeStart/ArticleView.aspx?ArticleUID=" + article.UniqueID;

				return item;
			}
			#endregion
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?