Web2.0时代,RSS你会用了吗?RSS技术实现总结
发布时间:2010-07-15  浏览:
如见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()); 
  } 

  ///  
  /// 取得聚合文章 
  /// 
 
  ///  
  public string GetRSS() 
  { 
   News t=new News();//自己的业务类 
   DataSet ds=t.GetListByClass(1);//根据类别得到数据 
    
   StringBuilder strCode=new StringBuilder(); 
   strCode.Append(""); 
   strCode.Append("   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(""); 
   strCode.Append("李天平RSSDemo"); 
   strCode.Append("http://"+Request.ServerVariables["SERVER_NAME"]+" "); 
   strCode.Append("天道酬勤 ");   
   strCode.Append("Copyright 2005 ");       
    
   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(""); 
    strCode.Append(""+title+""); 
    strCode.Append("http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+""); 
    strCode.Append(""+description+""); 
    strCode.Append("");     
    strCode.Append(""+pubdate+""); 
    strCode.Append(""+ClassId+""); 
    strCode.Append("
");     
   } 
   strCod


.Append("
"); 
   strCode.Append("");   
   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); 
  } 
  ///  
  /// 取得聚合文章 
  /// 
 
  ///  
  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.W


iteStartElement("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("    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(); 
  &


bsp;writer.Flush(); 
   writer.Close(); 
  
  } 
2.在线RSS阅读获取。

页面代码:
   
   Feed种子:&lt;asp:TextBox id="FeedUrl" runat="server" Width="440px">
 
   显示条数:&lt;asp:TextBox id="Num" runat="server" Width="48px">

 
   
   
 
   
 
   

 

后台代码:
  ///  
  /// 获得要显示的Feed种子数据 
  /// 
 
  ///  
  ///  
  ///  
  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; 
    
 &


bsp;  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 += "" + title + "
";   
       }    &


bsp;   
      } 
     }         
    } 
    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" %> 
 
 
  
  XmlHttp 
   
   
   
   
   
   
  
  
   
    
    
     
      
      数据载入中...
 
      
     
    
   
 
   
  
 
资讯推荐
关于2016年春节放假安排2016-01-26
为了方便同事们提前订票回家过年,现在公司春节放假时间安排通知。 春节放假时间为:2016年2月3到 2月14日。共11天。 广大客户在我...
如何做好创业型网站运营2016-03-07
1、紧记网站定位,制订网站长期与短期经营目标。   网站定位是网站发展之本,不管是营销型网站建设还是创业型网站运营,网站经营偏离了定位或定位不...
奢侈品B2C的网站规划该如何做2016-03-07
电子商务(EC,也就是E-Commerce的缩写),关于电子商务的定义世人众说纷纭,从不同的角度出发有不同的定义。可以理解为以 Internet为依托,借助一定...
微信:支付宝抢红包要到春晚,我们今晚就开始!2016-01-26
昨天上午 11 点,支付宝通过一个长微博,公布了大家期待已久的与央视春晚独家合作的互动玩法,核心点在于必须主动通过社交拓展才能够获得最多的红包。 支...
关于我们about fang yue
新闻资讯news
版权所有:广州方悦信息科技有限公司 Copyright © 2012-2015 方悦互动 ALL Right Reserved.     粤ICP备14072645号