shaipe的专栏

谢鹏ID:shaipe
17934次访问,排名6064(-2)好友4人,关注者6
我喜欢程序,觉得编程就是像是一种艺术要用自己的心思才能搭建好
shaipe的文章
原创 31 篇
翻译 0 篇
转载 3 篇
评论 3 篇
最近评论
liyingben:如果用开源软件实现比较好

http://www.51kaiyuan.net
bloglife:好,收藏用用
loverobi:鹏鹏我崇拜死你了!反正我看不懂。
顺便pf下自己,N年前偶就预言你以后会发达滴~吓吓吓吓!
文章分类
收藏
相册
看看就明白
Friend Blog
shaipe MSN BLog
仙岩Blog
喽喽蚁的小屋
杨东 BLOG
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 Web2.0时代,RSS你会用了吗?收藏

新一篇: 自己动手写AJAX

如见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)后台代码;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();
  }


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>

发表于 @ 2006年01月26日 23:41:00|评论(loading...)|编辑

旧一篇: 学习Web 2.0

评论

#orivan-msn-com 发表于2006-02-10 00:14:00  IP: 218.24.97.*
TrackBack来自《》

收藏
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © shaipe