首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 图形图象-> Maya教程
Web2.0时代,RSS你会用了吗?(技术实现总结)-.NET教程,Web Service开发
作者:网友供稿 点击:56
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
如见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();
  }

 (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> (作者:李天平    转载请注明)

 


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·C# 1.x 实现 "强类型元素唯一的 ArrayList"-.NET教程,C#语言
·NET(C#)连接各类数据库-集锦-.NET教程,C#语言
·快速測試 Tomcat + Oracle 9i + JSP-JSP教程,Jsp/Servlet
·使用.NET读取XML文件-.NET教程,XML应用
·XML 实用工具类-JSP教程,Java与XML
·如何把ASP编写成DLL-ASP教程,ASP应用
·vb.net中不需要EXCEL导出成XSL-.NET教程,VB.Net语言
·Asp之Request对象(1)-ASP教程,ASP应用
·C#读硬盘序列号的原代码-.NET教程,C#语言
·取得的IP/用户名等信息-ASP教程,ASP应用
最新文章
·linux操作系统上摄像头的使用小技巧_linux教程
·c#动态生成树型结构的web程序设计_c#应用
·一个联盟该如何来吸引站长加盟_网赚技巧
·童之磊:中文在线的“二次创业”_站长访谈
·实体店铺如何与网店结合提高销售额的经验_站长心得
·20年之后,个人站长发展项目的一些奇思怪想_站长心得
·google adsense的菜鸟常识_google推广
·如何利用google增加你的网站访问量_google推广
·专业的seo,为什么不承诺排名_seo网站优化
·用专业代码给网站增加搜索引擎_站长心得
相关主题
  • web2.0网站如何进行搜索引擎的优化_站长心得
  • web2.0网站需要借鉴的七种传统赢利模式_站长心得
  • web2.0为何在中国水土不服_站长心得
  • web2.0创业公司大量涌现 流行走小巧路线_it动态
  • 西部数码虚拟主机

    友情链接
    CNNIC 西部数码
    万网 自助建站
    虚拟主机 asp空间
    域名注册 域名
    域名申请 主页空间
    论坛空间 网站空间
    国际域名 虚拟空间
    空间租用 DDOS防火墙
    成都主机托管 四川主机托管
    主机租用 服务器租用
    网站目录 自助建站
    虚拟主机 网址大全
    软件下载
    自助链接
    虚拟主机资讯 特价虚拟主机
    版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
    关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
    特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
    发表评论 打印  刷新     关闭