Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,XML等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项
目需要,自己写了一个.Net下面生成RSS信息的类,如下:
using System;
using System.XML;
using System.Collections;
using System.Globalization;
using System.Web;
namespace BLRL
{
/// <summary>
/// Summary description for Rss.
/// </summary>
public class Rss
{
const string dublinCoreNamespaceUri = @"http://purl.org/dc/elements/1.1/";
const string slashNamespaceUri = @"http://purl.org/rss/1.0/modules/slash/";
const string syndicationNamespaceUri = @"http://purl.org/rss/1.0/modules/syndication/";
//RSS频道结构
struct RssChannel
{
public string title;//标题
public string link;//连接
public string language;//语言
public string description;//描述
public string webMaster;//发布者
}
//RSS图片信息
struct RssImage
{
public string url;//地址
public string title;//标题
public int height ;//高度
public int width;//长度
}
//RSS项结构
struct RssItem
{
public string title;//标题
public string catalog;//类别
public string link;//连接
public DateTime pubDate;//发布日期
public string description;//描述
}
public Rss()
{
//
// TODO: Add constructor logic here
//
}
/// <summary>
///添加rss版本信息
/// </summary>
/// <param name="XMLDocument"></param>
/// <returns></returns>
public static XMLDocument AddRssPreamble( XMLDocument XMLDocument)
{
//声明创建1.0版本得XML
XMLDeclaration XMLDeclaration = XMLDocument.CreateXMLDeclaration("1.0", "utf-8", null);
XMLDocument.InsertBefore(XMLDeclaration, XMLDocument.DocumentElement);
XMLElement rssElement = XMLDocument.CreateElement("rss");
XMLAttribute rssVersionAttribute = XMLDocument.CreateAttribute("version");
rssVersionAttribute.InnerText = "2.0";
rssElement.Attributes.Append(rssVersionAttribute);
XMLDocument.AppendChild(rssElement);
XMLAttribute dublicCoreNamespaceUriAttribute = XMLDocument.CreateAttribute("XMLns:dc");
dublicCoreNamespaceUriAttribute.InnerText = dublinCoreNamespaceUri;
rssElement.Attributes.Append(dublicCoreNamespaceUriAttribute);
XMLAttribute slashNamespaceUriAttribute = XMLDocument.CreateAttribute("XMLns:slash");
slashNamespaceUriAttribute.InnerText = slashNamespaceUri;
rssElement.Attributes.Append(slashNamespaceUriAttribute);
XMLAttribute syndicationNamespaceUriAttribute = XMLDocument.CreateAttribute("XMLns:sy");
syndicationNamespaceUriAttribute.InnerText = syndicationNamespaceUri;
rssElement.Attributes.Append(syndicationNamespaceUriAttribute);

return XMLDocument;
}
/// <summary>
/// 添加频道
/// </summary>
/// <param name="XMLDocument"></param>
/// <param name="channel"></param>
/// <returns></returns>
private static XMLDocument AddRssChannel( XMLDocument XMLDocument, RssChannel channel)
{
XMLElement channelElement = XMLDocument.CreateElement("channel");
XMLNode rssElement = XMLDocument.SelectSingleNode("rss");
rssElement.AppendChild(channelElement);
//添加标题
XMLElement channelTitleElement = XMLDocument.CreateElement("title");
channelTitleElement.InnerText = channel.title;
channelElement.AppendChild(channelTitleElement);
//添加连接
XMLElement channelLinkElement = XMLDocument.CreateElement("link");
channelLinkElement.InnerText = channel.link;
channelElement.AppendChild(channelLinkElement);
//添加描述
XMLElement channelDescriptionElement = XMLDocument.CreateElement("description");
XMLCDataSection cDataDescriptionSection = XMLDocument.CreateCDataSection(channel.description);
channelDescriptionElement.AppendChild(cDataDescriptionSection);
channelElement.AppendChild(channelDescriptionElement);
//添加语言
XMLElement languageElement = XMLDocument.CreateElement("language");
languageElement.InnerText = channel.language;
channelElement.AppendChild(languageElement);
//添加发布者
XMLElement webMasterElement = XMLDocument.CreateElement("webMaster");
webMasterElement.InnerText = channel.webMaster;
channelElement.AppendChild(webMasterElement);
return XMLDocument;
}

//添加RssImage
private static XMLDocument AddRssImage(XMLDocument XMLDocument, RssImage img)
{
XMLElement imgElement = XMLDocument.CreateElement("image");
XMLNode channelElement = XMLDocument.SelectSingleNode("rss/channel"); 
//创建标题
XMLElement imageTitleElement = XMLDocument.CreateElement("title");
imageTitleElement.InnerText = img.title;
imgElement.AppendChild(imageTitleElement);
//创建地址
XMLElement imageUrlElement = XMLDocument.CreateElement("url");
imageUrlElement.InnerText = img.url;
imgElement.AppendChild(imageUrlElement);
//创建高度
XMLElement imageHeightElement = XMLDocument.CreateElement("height");
imageHeightElement.InnerText = img.height.ToString();
imgElement.AppendChild(imageHeightElement);
//创建长度
XMLElement imageWidthElement = XMLDocument.CreateElement("width");
imageWidthElement.InnerText = img.width.ToString();
imgElement.AppendChild(imageWidthElement);
//将图像节点添加到频道节点里面
channelElement.AppendChild(imgElement);
return XMLDocument;
}

/// <summary>
/// 添加项信息
/// </summary>
/// <param name="XMLDocument"></param>
/// <param name="item"></param>
/// <returns></returns>
private static XMLDocument AddRssItem (XMLDocument XMLDocument, RssItem item)
{
XMLElement itemElement = XMLDocument.CreateElement("item");
XMLNode channelElement = XMLDocument.SelectSingleNode("rss/channel");
//创建标题
XMLElement itemTitleElement = XMLDocument.CreateElement("title");
XMLCDataSection cDataTitleSection = XMLDocument.CreateCDataSection(item.title);
itemTitleElement.AppendChild(cDataTitleSection);
itemElement.AppendChild(itemTitleElement);
//创建日期
XMLElement pubDateElement = XMLDocument.CreateElement("pubDate");
pubDateElement.InnerText = XMLConvert.ToString(item.pubDate.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss");
itemElement.AppendChild(pubDateElement);
//添加连接
XMLElement itemLinkElement = XMLDocument.CreateElement("link");
itemLinkElement.InnerText = item.link;
itemElement.AppendChild(itemLinkElement);
//创建描述
XMLElement itemDescriptionElement = XMLDocument.CreateElement("description");
XMLCDataSection cDataDescriptionSection = XMLDocument.CreateCDataSection(item.description);
itemDescriptionElement.AppendChild(cDataDescriptionSection);
itemElement.AppendChild(itemDescriptionElement);

//创建类型
XMLElement itemcatalogElement = XMLDocument.CreateElement("catalog");
itemcatalogElement.InnerText = item.catalog;
itemElement.AppendChild(itemcatalogElement);
//将RssItem添加到频道节点里面
channelElement.AppendChild(itemElement);
return XMLDocument;
}
}
}
<link type="application/rss+XML" rel="alternate" href="rssfeed.ASPx">