web2.0时代 用Asp.Net写Rss,你会了吗?

2024-03-24 20:18
文章标签 asp net 时代 web2.0 rss

本文主要是介绍web2.0时代 用Asp.Net写Rss,你会了吗?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
RSS是基于XML的一种形式。并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。具体格式可以查一下RSS 2.0规范,这里就不再重复粘贴了。

下面是总结的几种RSS的技术实现代码:

1.在线生成RSS聚合页。

(1)创建Rss.aspx
<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
只留下这一行,其余的都删掉。

(2)后台代码;Rss.aspx.cs

private void Page_Load(object sender, System.EventArgs e)
 {
 Response.ContentType="text/xml";
 Response.Write(GetRSS());
 }

 /// <summary>
 /// 取得聚合文章
 /// </summary>
 /// <returns></returns>
 public string GetRSS()
 {
 News t=new News();//自己的业务类
 DataSet ds=t.GetListByClass(1);//根据类别得到数据
 
 StringBuilder strCode=new StringBuilder();
 strCode.Append("<?xml version=/"1.0/" encoding=/"utf-8/" standalone=/"yes/" ?>");
 strCode.Append("<rss version='2.0' xmlns:dc=/"http://purl.org/dc/elements/1.1//"");
 strCode.Append(" xmlns:trackback=/"http://madskills.com/public/xml/rss/module/trackback//" ");
 strCode.Append(" xmlns:wfw=/"http://wellformedweb.org/CommentAPI//" xmlns:slash=/"http://purl.org/rss/1.0/modules/slash//">");
 strCode.Append("<channel>");
 strCode.Append("<title>李天平RSSDemo</title>");
 strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");
 strCode.Append("<description>天道酬勤</description> ");
 strCode.Append("<copyright>Copyright 2005</copyright> ");
 
 foreach(DataRow row in ds.Tables[0].Rows)
 {
 string Id=row["Id"].ToString();
 string title=row["title"].ToString();
 string description=row["description"].ToString();
 string pubdate=row["pubdate"].ToString();
 string ClassId=row["ClassId"].ToString();
 //string author=row["author"].ToString();

 strCode.Append("<item>");
 strCode.Append("<title>"+title+"</title>");
 strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");
 strCode.Append("<subject>"+description+"</subject>");
 strCode.Append("<description><![CDATA["+description+"]]></description>");
 strCode.Append("<PubDate>"+pubdate+"</PubDate>");
 strCode.Append("<category>"+ClassId+"</category>");
 strCode.Append("</item>");
 }
 strCode.Append("</channel>");
 strCode.Append("</rss>");
 return strCode.ToString();
 }

(3) XmlTextWriter实现方式2;Rss.aspx.cs

string xmlDoc="rss.xml";
 private void Page_Load(object sender, System.EventArgs e)
 {
 xmlDoc=Server.MapPath(".")+xmlDoc;
 GetRSS2();
 XmlDocument doc= new XmlDocument();
 doc.Load(xmlDoc);
 Response.ContentType = "text/xml";
 doc.Save(Response.Output);
 }
 /// <summary>
 /// 取得聚合文章
 /// </summary>
 /// <returns></returns>
 public void GetRSS2()
 {
 News t=new News();
 DataSet ds=t.GetListByClass(1);
 
 XmlTextWriter writer = new XmlTextWriter(xmlDoc,Encoding.UTF8);
 writer.Formatting = Formatting.Indented;
 writer.WriteStartDocument(true);
 writer.WriteComment("RSS页的实现");
 writer.WriteStartElement("rss");
 writer.WriteAttributeString("version","2.0");
 writer.WriteStartElement("channel");
 writer.WriteStartElement("title");
 writer.WriteString("李天平RSSDemo");
 writer.WriteEndElement();
 writer.WriteStartElement("link");
 writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]);
 writer.WriteEndElement();
 writer.WriteStartElement("description");
 writer.WriteString("天道酬勤");
 writer.WriteEndElement();
 writer.WriteStartElement("copyright");
 writer.WriteString("Copyright 2005");
 writer.WriteEndElement();
 writer.WriteStartElement("language");
 writer.WriteString("zh-cn");
 writer.WriteEndElement();
 
 foreach(DataRow row in ds.Tables[0].Rows)
 {
 string Id=row["Id"].ToString();
 string title=row["title"].ToString();
 string description=row["description"].ToString();
 string pubdate=row["pubdate"].ToString();
 string ClassId=row["ClassId"].ToString();
 //string author=row["author"].ToString();

 writer.WriteStartElement("item");
 writer.WriteStartElement("title");
 writer.WriteString(title);
 writer.WriteEndElement();
 writer.WriteStartElement("link");
 writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id) ;
 writer.WriteEndElement();
 writer.WriteStartElement("description");
 writer.WriteCData(description);
 writer.WriteEndElement();
 writer.WriteStartElement("pubDate");
 writer.WriteString(pubdate);
 writer.WriteEndElement();
 writer.WriteStartElement("category");
 writer.WriteString(ClassId);
 writer.WriteEndElement();
 writer.WriteEndElement();
 }
 writer.WriteEndElement();
 writer.WriteEndElement();
 writer.Flush();
 writer.Close();
 
 }

2.在线RSS阅读获取。

页面代码:
<P style="FONT-SIZE: 11px">
 Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
 显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>
 <P style="FONT-SIZE: 11px">
 <asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>
 <BR>
 <asp:Label id="RssFeed" runat="server"></asp:Label></P>

后台代码:
/// <summary>
 /// 获得要显示的Feed种子数据
 /// </summary>
 /// <param name="RssUrl"></param>
 /// <param name="showNewsCount"></param>
 /// <returns></returns>
 public string LoadRSS(string RssUrl, int showNewsCount)
 {
 string strRssList = "";
 string strMsg;
 try
 {
 XmlDocument objXMLDoc = new XmlDocument();
 objXMLDoc.Load(RssUrl);
 XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item");
 
 if(showNewsCount > 30)
 showNewsCount = 10;
 if(showNewsCount < 1)
 showNewsCount = objItems.Count;
 
 string title="";
 string link="";
 int i;

 if(objXMLDoc.HasChildNodes == true)
 {
 i = 1;
 foreach(XmlNode objNode in objItems)
 {
 if(i<=showNewsCount)
 {
 if(objNode.HasChildNodes == true)
 {
 XmlNodeList objItemsChild = objNode.ChildNodes;
 foreach(XmlNode objNodeChild in objItemsChild)
 {
 switch(objNodeChild.Name)
 {
 case "title":
 title = objNodeChild.InnerText;
 break;
 case "link":
 link = objNodeChild.InnerText;
 break;
 }
 }
 i = i+1;
 strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>";
 }
 }
 }
 }
 strMsg = strRssList;
 }
 catch
 {
 strMsg = "RSS Feed 源数据出错!";
 }
 return strMsg;
 }

 //获取按钮,获取指定RSS
 private void GetFeed_Click(object sender, System.EventArgs e)
 {
 if(FeedUrl.Text == "")//RSS地址
 {
 RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!";
 return ;
 }
 RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目
 }

3.无刷新动态更新的在线RSS阅读获取
<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
 <title>XmlHttp</title>
 <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
 <meta name="CODE_LANGUAGE" Content="C#">
 <meta name="vs_defaultClientScript" content="JavaScript">
 <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 <style>td { font-size: 9pt}
 </style>
 <script>
 <!--
 var oDiv
 var xh
 function getXML()
 {
 xh =new ActiveXObject("Microsoft.XMLHTTP");
 oDiv = document.getElementById("rssitem");
 oDiv.style.display= "";
 try
 {
 //如果是本地改成下面语句直接读取
 //xh.open("GET","/Rss.aspx",false);
 xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);
 xh.send(null);
 loadData(xh,oDiv);
 }
 catch(e)
 {
 error(oDiv);
 }
 }
 function loadData(xh,oDiv)
 {
 if (xh.readyState == 4)
 {
 xml = xh.responsexml;
 var i;
 var nodes = xml.selectNodes("/rss/channel/item");
 var bloglink = xml.selectSingleNode("/rss/channel/link").text;
 oDiv.innerHTML = "";
 var html;
 for(i=0;i<nodes.length;i++)
 {
 
 html += "<div >";
 html += " <div >";
 html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";
 html += " </div>";
 html += " <div >";
 html += " " +nodes[i].selectSingleNode("description").text;
 html += " </div>"
 //html += " </div>";
 html += "</div><hr>";

 }
 oDiv.innerHTML = html;
 }
 else
 {
 error(oDiv);
 }
 }

 function error(oDiv)
 {
 oDiv.innerHTML = "载入失败";
 }
 -->
 </script>
 </HEAD>
 <body MS_POSITIONING="GridLayout" οnlοad="window.setTimeout('getXML()',200);">
 <form id="Form1" method="post" runat="server">
 <div align=center>
 <table cellpadding="0" cellspacing="0" border="0" width="80%">
 <tr>
 <td>
 <div id="rssitem" style="WIDTH:80%">数据载入中...</div>
 </td>
 </tr>
 </table>
 </div>
 </form>
 </body>
</HTML>
 

这篇关于web2.0时代 用Asp.Net写Rss,你会了吗?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/842665

相关文章

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

如何在Visual Studio中调试.NET源码

今天偶然在看别人代码时,发现在他的代码里使用了Any判断List<T>是否为空。 我一般的做法是先判断是否为null,再判断Count。 看了一下Count的源码如下: 1 [__DynamicallyInvokable]2 public int Count3 {4 [__DynamicallyInvokable]5 get

2、PF-Net点云补全

2、PF-Net 点云补全 PF-Net论文链接:PF-Net PF-Net (Point Fractal Network for 3D Point Cloud Completion)是一种专门为三维点云补全设计的深度学习模型。点云补全实际上和图片补全是一个逻辑,都是采用GAN模型的思想来进行补全,在图片补全中,将部分像素点删除并且标记,然后卷积特征提取预测、判别器判别,来训练模型,生成的像

内卷时代无人机培训机构如何做大做强

在当今社会,随着科技的飞速发展,“内卷”一词频繁被提及,反映了各行业竞争日益激烈的现象。对于无人机培训行业而言,如何在这样的时代背景下脱颖而出,实现做大做强的目标,成为每个培训机构必须深思的问题。以下是从八个关键方面提出的策略,旨在帮助无人机培训机构在内卷时代中稳步前行。 1. 精准定位市场需求 深入研究市场:通过市场调研,了解无人机行业的最新趋势、政策导向及未来发展方向。 明确目标

.NET 自定义过滤器 - ActionFilterAttribute

这个代码片段定义了一个自定义的 ASP.NET Core 过滤器(GuardModelStateAttribute),用于在控制器动作执行之前验证模型状态(ModelState)。如果模型状态无效,则构造一个 ProblemDetails 对象来描述错误,并返回一个 BadRequest 响应。 代码片段: /// <summary>/// 验证 ModelState 是否有效/// </

.Net Mvc-导出PDF-思路方案

效果图: 导语:     在我们做项目的过程中,经常会遇到一些服务性的需求,感到特别困扰,明明实用的价值不高,但是还是得实现;     因此小客在这里整理一下自己导出PDF的一些思路,供大家参考。     网上有很多导出PDF运用到的插件,大家也可以看看其他插件的使用,学习学习; 提要:     这里我使用的是-iTextSharp,供大家参考参考,借鉴方案,完善思路,补充自己,一起学习

.net MVC 导出Word--思路详解

序言:          一般在项目的开发过程中,总会接收到一个个需求,其中将数据转换成Work来下载,是一个很常见的需求;          那么,我们改如何处理这种需求,并输出实现呢?          在做的过程中,去思考 1、第一步:首先确认,Work的存在位置,并创建字符输出路:             //在的项目中创建一个存储work的文件夹             string

asp.net 中GridView的使用方法

可以看看,学习学习 https://blog.csdn.net/zou15093087438/article/details/79637042

数字经济时代,零售企业如何实现以消费者为中心的数字化转型?

在数字经济时代,零售企业正面临着前所未有的挑战与机遇。随着消费者行为的数字化和多样化,传统的零售模式已难以满足市场需求。为了在激烈的市场竞争中立于不败之地,零售企业必须实现以消费者为中心的数字化转型。这一转型不仅仅是技术的升级,更是一场涉及企业战略、组织结构、运营模式和人才管理的深刻变革。本文将探讨零售企业在数字化转型过程中遇到的难点,并提出相应的解决策略,通过实际案例分析,展示如何通过综合措施进

人工智能时代开启ai代写模式,让创作变得更加简单!

随着人工智能技术的飞速发展,我们的生活和工作方式正在发生翻天覆地的变化。在这个信息爆炸的时代,内容创作领域也迎来了新的变革——ai代写。这一模式的出现,让文章写作变得更加简单高效,为创作者们打开了新的可能。   一、ai代写的优势   提高写作效率   在传统写作过程中,创作者需要花费大量时间和精力进行资料搜集、构思和撰写。而ai代写能够在短时间内完成这些工作,大大提高了写作效率。创