Go homepage(回首页) Upload pictures (上传图片) Write articles (发文字帖)
The author:(作者)delvpublished in(发表于) 2014/1/6 9:08:23 Web,2.0时代RSS的.Net实现_[Asp.Net教程]
Web2.0时是以Blog,Wike,Tag,RSS等技术为代表的以个性化为中心的新一代互联网模式,RSS比起Blog等名词似乎还不算太热。但打开网页仍是遍布了RSS,Xml等醒目的图标,打开页面Mathon浏览器也是一个劲的提示有新的RSS连接,前一段一个项
目需要,自己写了一个.Net下面生成RSS信息的类,如下:
1using System; 2using System.Xml; 3using System.Collections; 4using System.Globalization; 5using System.Web; 6 7namespace BLRL 8{ 9 /// 10 /// Summary description for Rss. 11 /// 12 public class Rss 13 { 14 const string dublinCoreNamespaceUri = @"http://purl.org/dc/elements/1.1/"; 15 const string slashNamespaceUri = @"http://purl.org/rss/1.0/modules/slash/"; 16 const string syndicationNamespaceUri = @"http://purl.org/rss/1.0/modules/syndication/"; 17 //RSS频道结构 18 struct RssChannel 19 { 20 public string title;//标题 21 public string link;//连接 22 public string language;//语言 23 public string description;//描述 24 public string webMaster;//发布者 25 } 26 27 //RSS图片信息 28 struct RssImage 29 { 30 public string url;//地址 31 public string title;//标题 32 public int height ;//高度 33 public int width;//长度 34 } 35 36 //RSS项结构 37 struct RssItem 38 { 39 public string title;//标题 40 public string catalog;//类别 41 public string link;//连接 42 public DateTime pubDate;//发布日期 43 public string description;//描述 44 45 } 46 public Rss() 47 { 48 // 49 // TOD Add constructor logic here 50 // 51 } 52 /// 53 ///添加rss版本信息 54 /// 55 /// 56 /// 57 public static XmlDocument AddRssPreamble( XmlDocument xmlDocument) 58 { 59 //声明创建1.0版本得xml 60 XmlDeclaration xmlDeclaration = xmlDocument.CreateXmlDeclaration("1.0", "utf-8", null); 61 xmlDocument.InsertBefore(xmlDeclaration, xmlDocument.DocumentElement); 62 63 XmlElement rssElement = xmlDocument.CreateElement("rss"); 64 65 XmlAttribute rssVersionAttribute = xmlDocument.CreateAttribute("version"); 66 rssVersionAttribute.InnerText = "2.0"; 67 rssElement.Attributes.Append(rssVersionAttribute); 68 xmlDocument.AppendChild(rssElement); 69 70 71 XmlAttribute dublicCoreNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:dc"); 72 dublicCoreNamespaceUriAttribute.InnerText = dublinCoreNamespaceUri; 73 rssElement.Attributes.Append(dublicCoreNamespaceUriAttribute); 74 75 XmlAttribute slashNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:slash"); 76 slashNamespaceUriAttribute.InnerText = slashNamespaceUri; 77 rssElement.Attributes.Append(slashNamespaceUriAttribute); 78 79 XmlAttribute syndicationNamespaceUriAttribute = xmlDocument.CreateAttribute("xmlns:sy"); 80 syndicationNamespaceUriAttribute.InnerText = syndicationNamespaceUri; 81 rssElement.Attributes.Append(syndicationNamespaceUriAttribute); 82 83 84 return xmlDocument; 85 } 86 87 /// 88 /// 添加频道 89 /// 90 /// 91 /// 92 /// 93 private static XmlDocument AddRssChannel( XmlDocument xmlDocument, RssChannel channel) 94 { 95 XmlElement channelElement = xmlDocument.CreateElement("channel"); 96 XmlNode rssElement = xmlDocument.SelectSingleNode("rss"); 97 98 rssElement.AppendChild(channelElement); 99100 //添加标题101 XmlElement channelTitleElement = xmlDocument.CreateElement("title");102 channelTitleElement.InnerText = channel.title;103 channelElement.AppendChild(channelTitleElement);104105 //添加连接106 XmlElement channelLinkElement = xmlDocument.CreateElement("link");107 channelLinkElement.InnerText = channel.link;108 channelElement.AppendChild(channelLinkElement);109110 //添加描述111 XmlElement channelDescriptionElement = xmlDocument.CreateElement("description");112 XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(channel.description);113 channelDescriptionElement.AppendChild(cDataDescriptionSection);114 channelElement.AppendChild(channelDescriptionElement);115 116 //添加语言117 XmlElement languageElement = xmlDocument.CreateElement("language");118 languageElement.InnerText = channel.language;119 channelElement.AppendChild(languageElement);120121 //添加发布者122 XmlElement webMasterElement = xmlDocument.CreateElement("webMaster");123 webMasterElement.InnerText = channel.webMaster;124 channelElement.AppendChild(webMasterElement);125126 return xmlDocument;127 }128129130 //添加RssImage131 private static XmlDocument AddRssImage(XmlDocument xmlDocument, RssImage img) 132 {133 XmlElement imgElement = xmlDocument.CreateElement("image");134 XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel"); 135136 //创建标题137 XmlElement imageTitleElement = xmlDocument.CreateElement("title");138 imageTitleElement.InnerText = img.title;139 imgElement.AppendChild(imageTitleElement);140141 //创建地址142 XmlElement imageUrlElement = xmlDocument.CreateElement("url");143 imageUrlElement.InnerText = img.url;144 imgElement.AppendChild(imageUrlElement);145146 //创建高度147 XmlElement imageHeightElement = xmlDocument.CreateElement("height");148 imageHeightElement.InnerText = img.height.ToString();149 imgElement.AppendChild(imageHeightElement);150151 //创建长度152 XmlElement imageWidthElement = xmlDocument.CreateElement("width");153 imageWidthElement.InnerText = img.width.ToString();154 imgElement.AppendChild(imageWidthElement);155156 //将图像节点添加到频道节点里面157 channelElement.AppendChild(imgElement);158 return xmlDocument;159 160 }161162163 /// 164 /// 添加项信息165 /// 166 /// 167 /// 168 /// 169 private static XmlDocument AddRssItem (XmlDocument xmlDocument, RssItem item) 170 {171 XmlElement itemElement = xmlDocument.CreateElement("item");172 XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");173174 //创建标题175 XmlElement itemTitleElement = xmlDocument.CreateElement("title"); 176 XmlCDataSection cDataTitleSection = xmlDocument.CreateCDataSection(item.title);177 itemTitleElement.AppendChild(cDataTitleSection); 178 itemElement.AppendChild(itemTitleElement);179180 //创建日期181 XmlElement pubDateElement = xmlDocument.CreateElement("pubDate");182 pubDateElement.InnerText = XmlConvert.ToString(item.pubDate.ToUniversalTime(), "yyyy-MM-ddTHH:mm:ss");183 itemElement.AppendChild(pubDateElement);184 185 //添加连接186 XmlElement itemLinkElement = xmlDocument.CreateElement("link");187 itemLinkElement.InnerText = item.link;188 itemElement.AppendChild(itemLinkElement);189190 //创建描述191 XmlElement itemDescriptionElement = xmlDocument.CreateElement("description");192 XmlCDataSection cDataDescriptionSection = xmlDocument.CreateCDataSection(item.description); 193 itemDescriptionElement.AppendChild(cDataDescriptionSection);194 itemElement.AppendChild(itemDescriptionElement);195196197 //创建类型198 XmlElement itemcatalogElement = xmlDocument.CreateElement("catalog");199 itemcatalogElement.InnerText = item.catalog;200 itemElement.AppendChild(itemcatalogElement);201202 //将RssItem添加到频道节点里面203 channelElement.AppendChild(itemElement);204205 return xmlDocument;206 }207 }208}
根据特定的需要,可以先将数据读取到列表里面,然后遍历列表,调用上述方法,生成Xml字符串。
这个字符串就是RS用到XML字符串了。也可以入aspx文件,然后用 调用下RSS文件,马桶等软件就会自动提示有RRS信息了
来源:网络
赞