`

Web2.0时代,RSS你会用了吗?(技术实现总结)

阅读更多

 如见Web2.0被吵的如火如荼,同时也有很多的评论褒贬不一。有人说Web2.0就是“一帮人在看皇帝的新装而已”。也有人说Web2.0将是一场变革。无论这些争论有没有价值,但我相信,存在就有它的必然性。也许Web2.0更像是一种商业模式,一个观念的变革而非技术。
     不管怎样,它来了,你准备好了吗?
     说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。
RSS毋容置疑就是其重要的应用之一。

     那么什么是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)后台代码实现方式1;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" onload="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时代的信息服务 .pdf

    Web2.0时代的信息服务研究涉及了互联网发展的重要阶段,其中包括Web2.0的主要理论、技术、应用及影响,以及这些因素如何应用于国内信息服务机构并对其工作产生影响。本文将详细探讨Web2.0的核心理念、基础理论、关键...

    Web2.0源代码

    1. **博客系统**:在Web2.0时代,博客成为个人和企业表达观点、分享知识的重要平台。这套源代码中的博客系统可能包括用户注册登录、发布和编辑文章、评论互动、分类管理、搜索功能等。Ajax技术的应用使得用户在不...

    web 2.0 and Ajax

    Ajax使得Web应用能够像桌面应用一样响应迅速,大大提升了用户体验,是Web 2.0时代的关键技术之一。 #### 3. 技术变迁与Web 2.0 从CGI/Perl到Servlets、JSP、PHP,再到基于Java的Web框架如Struts和JSF,这些技术...

    web2.0时代的发展与思考[整理].pdf

    总结,Web 2.0时代不仅改变了我们的生活方式,也推动了互联网技术和商业模式的创新。然而,随着时代的发展,我们需要不断审视和解决问题,以便更好地迎接Web 3.0时代的到来。在这个过程中,保持以人为本的原则,持续...

    web2.0的特点

    Web2.0的技术基础包括RSS、XML、Ajax、Trackback和Tag等。RSS,即Really Simple Syndication,允许用户订阅感兴趣的内容源,实现信息的聚合。XML作为数据交换的基础,推动了诸如XSL、RSS、Ajax等技术的发展。Ajax,...

    web2.0 & CRM

    Web2.0时代产生的大量数据为CRM提供了丰富的资源。通过对这些数据进行分析,企业能够深入了解消费者的偏好和行为模式,进而制定更为精准的营销策略。例如,利用数据分析工具跟踪用户的网站浏览记录可以帮助企业识别...

    什么是Web 2.0

    6. **开放的标准和技术**:Web 2.0鼓励使用开放标准和技术,如RSS、XML和AJAX等,这使得不同平台和应用之间的集成变得更加容易。 7. **商业模式的创新**:Web 2.0催生了许多新的商业模式,比如基于广告的服务、订阅...

    AJAX和WEB2.0

    视频讲座“AJAX简介与WEB2.0”可能会涵盖以下内容: 1. AJAX的基本原理和工作流程。 2. 如何创建简单的AJAX请求和响应处理。 3. JSON与XML在AJAX中的应用比较。 4. 使用JavaScript库简化AJAX开发。 5. Web 2.0的...

    Web2.0时代的网络营销策略.pdf

    总结来说,Web2.0时代的网络营销策略强调用户参与、内容共创、社交互动和数据分析,这些都是与Web1.0时代相比的重大转变。企业或品牌需要积极利用这些策略,才能在竞争激烈的市场中脱颖而出。同时,随着技术的进步,...

    web2.0源码

    这个"web2.0源码"压缩包显然包含了实现Web2.0特性的代码示例,非常适合开发者用于学习和实践。让我们深入探讨一下Web2.0的关键概念和相关技术。 Web2.0的核心理念是用户参与和分享,它强调社区、互动和个性化。相比...

    ASP.NET 2.0的web2.0应用

    在Web2.0的时代背景下,ASP.NET 2.0被广泛应用于创建交互性强、用户体验优秀的网络应用。 1. **ASP.NET 2.0的新特性** - **母版页(Master Pages)**:允许开发者创建统一的布局,方便维护网站的整体风格。 - **...

    Web2.0技术概览(IBM)

    而到了Web2.0时代,互联网则成为了信息应用和服务的领导平台。 #### 社会方面的影响 Web2.0将人们融入软件之中,加强了人与人之间的连接。通过激励用户的参与,可以感知大规模用户的行为模式,从而获取群体智慧,...

    WEB2.0技术带来协同办公(OA)软件的变革

    随着信息技术的飞速发展,网络从Web1.0时代过渡到了Web2.0时代,这一转变不仅改变了人们获取信息的方式,更深刻地影响了企业内部的协同办公模式。Web2.0技术的出现,为协同办公(OA)软件带来了革命性的变化,使其...

    精通Web 2.0

    ### 精通Web 2.0:深入理解与应用 #### 一、Web 2.0概述 Web 2.0是指互联网发展的第二阶段,它强调用户参与、互动和内容共享。相比于早期的Web 1.0,Web 2.0更注重用户的交互体验,支持动态网页内容和用户生成内容...

    Web 2.0动态网站开发 : Ajax技术与应用光盘

    Web 2.0是互联网发展的一个重要阶段,它标志着用户从...总之,Ajax技术是Web 2.0时代的重要组成部分,它极大地改变了我们使用互联网的方式,通过这本书的学习,开发者可以掌握创建动态、交互性强的Web应用程序的技能。

    web1.0和web2.0和web3.0

    ### Web1.0、Web2.0与Web3.0:互联网演进的历史与标志性变化 #### 一、Web1.0:静态信息传递时代 Web1.0时期大致始于1990年代中期,这一阶段的互联网主要特点是提供静态的信息内容。用户访问网站主要是为了获取...

Global site tag (gtag.js) - Google Analytics