rt
有没有类似java的开源项目?
才网上搜了一下,大概了解了rss是个什么东东,但还是没有头绪。
请哪位大侠给点思路,或者直接由代码更好
谢谢

解决方案 »

  1.   

    http://tracefact.net/Asp-Net/Creating-and-Consuming-Rss-Feeds-on-Your-Website.aspx介绍的很详细!~
      

  2.   

    我这打不开其它网站
    可不可以麻烦详细说一些rss的解析,读取。
    谢谢
      

  3.   

    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>