Asp -> .Net ( VB.Net C# )
新刚学习成长记录

 

  1如见Web2.0被吵的如火如荼,同时也有很多的评论褒贬不一。有人说Web2.0就是“一帮人在看皇帝的新装而已”。也有人说Web2.0将是一场变革。无论这些争论有没有价值,但我相信,存在就有它的必然性。也许Web2.0更像是一种商业模式,一个观念的变革而非技术。
  2     不管怎样,它来了,你准备好了吗?
  3     说到Web2.0,就会提到Blog、TAG、SNS、RSS、wiki这些软件应用和xml、ajax等这些新理论和技术实现。
  4RSS毋容置疑就是其重要的应用之一。
  5
  6     那么什么是RSS?它到底有什么用呢?
  7
  8     RSS是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”),通常被用于新闻和其他按顺序排列的网站,例如Blog网站。网站提供RSS输出,有利于让用户发现网站内容的更新。网站用户可以在客户端借助于类似新闻资讯阅读器等支持RSS的新闻聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。
  9     RSS是基于XML的一种形式。并且所有的RSS文件都要遵守万维网联盟(W3C)站点发布的XML 1.0规范。具体格式可以查一下RSS 2.0规范,这里就不再重复粘贴了。
 10
 11下面是我总结的几种RSS的技术实现代码:
 12
 131.在线生成RSS聚合页。
 14
 15(1)创建Rss.aspx
 16<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
 17只留下这一行,其余的都删掉。
 18
 19(2)后台代码;Rss.aspx.cs
 20
 21  private void Page_Load(object sender, System.EventArgs e)
 22  {    
 23   Response.ContentType="text/xml";
 24   Response.Write(GetRSS());
 25  }

 26
 27  /// <summary>
 28  /// 取得聚合文章
 29  /// </summary>
 30  /// <returns></returns>

 31  public string GetRSS()
 32  {
 33   News t=new News();//自己的业务类
 34   DataSet ds=t.GetListByClass(1);//根据类别得到数据
 35   
 36   StringBuilder strCode=new StringBuilder();
 37   strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");
 38   strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1/\"");
 39   strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\" ");
 40   strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI/\" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash/\">");
 41   strCode.Append("<channel>");
 42   strCode.Append("<title>李天平RSSDemo</title>");
 43   strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");
 44   strCode.Append("<description>天道酬勤</description> ");  
 45   strCode.Append("<copyright>Copyright 2005</copyright> ");      
 46   
 47   foreach(DataRow row in ds.Tables[0].Rows)
 48   {
 49    string Id=row["Id"].ToString();
 50    string title=row["title"].ToString();
 51    string description=row["description"].ToString();
 52    string pubdate=row["pubdate"].ToString();
 53    string ClassId=row["ClassId"].ToString();
 54    //string author=row["author"].ToString();
 55
 56    strCode.Append("<item>");
 57    strCode.Append("<title>"+title+"</title>");
 58    strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");
 59    strCode.Append("<subject>"+description+"</subject>");
 60    strCode.Append("<description><![CDATA["+description+"]]></description>");    
 61    strCode.Append("<PubDate>"+pubdate+"</PubDate>");
 62    strCode.Append("<category>"+ClassId+"</category>");
 63    strCode.Append("</item>");    
 64   }

 65   strCode.Append("</channel>");
 66   strCode.Append("</rss>");  
 67   return strCode.ToString();
 68  }

 69
 70
 712.在线RSS阅读获取。
 72
 73页面代码:
 74  <P style="FONT-SIZE: 11px">
 75   Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
 76   显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>
 77  <P style="FONT-SIZE: 11px">
 78   <asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>
 79   <BR>
 80   <asp:Label id="RssFeed" runat="server"></asp:Label></P>
 81
 82后台代码:
 83  /// <summary>
 84  /// 获得要显示的Feed种子数据
 85  /// </summary>
 86  /// <param name="RssUrl"></param>
 87  /// <param name="showNewsCount"></param>
 88  /// <returns></returns>

 89  public string LoadRSS(string RssUrl, int showNewsCount)
 90  
 91   string strRssList = "";
 92   string strMsg;
 93   try
 94   {      
 95    XmlDocument objXMLDoc = new XmlDocument();    
 96    objXMLDoc.Load(RssUrl);   
 97    XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item");    
 98   
 99    if(showNewsCount > 30)
100     showNewsCount = 10;   
101    if(showNewsCount < 1)
102     showNewsCount = objItems.Count;
103   
104    string title="";
105    string link="";  
106    int i;
107
108    if(objXMLDoc.HasChildNodes == true)
109    {
110     i = 1;
111        foreach(XmlNode objNode in objItems)
112     {
113      if(i<=showNewsCount)
114      {
115       if(objNode.HasChildNodes == true)
116       {
117        XmlNodeList objItemsChild = objNode.ChildNodes;
118        foreach(XmlNode objNodeChild in objItemsChild)
119        {
120         switch(objNodeChild.Name)
121         {
122          case "title":
123           title = objNodeChild.InnerText;
124           break;
125          case "link":
126           link = objNodeChild.InnerText;
127           break;          
128         }
         
129        }
 
130        i = i+1;
131        strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>";  
132       }
       
133      }

134     }
        
135    }

136    strMsg = strRssList;
137   }

138   catch
139   {
140    strMsg = "RSS Feed 源数据出错!";
141   }

142   return strMsg;
143  }

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

155
1563.无刷新动态更新的在线RSS阅读获取
157
158<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>
159<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
160<HTML>
161 <HEAD>
162  <title>XmlHttp</title>
163  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
164  <meta name="CODE_LANGUAGE" Content="C#">
165  <meta name="vs_defaultClientScript" content="JavaScript">
166  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
167  <style>td { font-size: 9pt}
168  </style>
169  <script>
170  <!-- 
171  var oDiv 
172  var xh     
173  function getXML()
174  {   
175   xh =new ActiveXObject("Microsoft.XMLHTTP"); 
176   oDiv = document.getElementById("rssitem");
177   oDiv.style.display= "";
178   try
179   {
180    //如果是本地改成下面语句直接读取
181    //xh.open("GET","/Rss.aspx",false);    
182    xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);
183    xh.send(null);
184    loadData(xh,oDiv);
185   }

186   catch(e)
187   {
188    error(oDiv);
189   }

190  }

191  function loadData(xh,oDiv)
192  {
193   if (xh.readyState == 4)
194   {
195    xml = xh.responsexml;
196    var i;
197    var nodes = xml.selectNodes("/rss/channel/item");
198    var bloglink = xml.selectSingleNode("/rss/channel/link").text;
199    oDiv.innerHTML = "";
200    var html;    
201    for(i=0;i<nodes.length;i++)
202    {    
203        
204      html += "<div >";
205      html += "    <div >";
206      html += "        <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";
207      html += "    </div>";
208      html += "    <div >";
209      html += "        " +nodes[i].selectSingleNode("description").text;
210      html += "    </div>"            
211      //html += "    </div>";
212      html += "</div><hr>";
213
214    }

215    oDiv.innerHTML = html;
216   }

217   else
218   {
219    error(oDiv);
220   }

221  }

222
223  function error(oDiv)
224  {
225   oDiv.innerHTML = "载入失败";
226  }

227  -->
228  </script>
229 </HEAD>
230 <body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);">
231  <form id="Form1" method="post" runat="server">
232   <div align=center>
233   <table cellpadding="0" cellspacing="0" border="0" width="80%">
234    <tr>
235     <td>
236      <div id="rssitem" style="WIDTH:80%">数据载入中</div>
237     </td>
238    </tr>
239   </table>
240   </div>
241  </form>
242 </body>
243</HTML>
244
245
246
posted on 2006-07-29 13:48  xinGang  阅读(617)  评论(0编辑  收藏  举报