★33°空間‰


                                 ----★七彩服飾  【最潮拜☆日單精品】【Esprit】【Hotwind】滿150包郵-女裝-流行女裝    www.7color.hb.cn

                                 ----智力比知識(shí)重要,素質(zhì)比智力重要,覺(jué)悟比素質(zhì)更重要
          posts - 110,comments - 35,trackbacks - 0
          如見(jiàn)Web2.0被吵的如火如荼,同時(shí)也有很多的評(píng)論褒貶不一。有人說(shuō)Web2.0就是“一幫人在看皇帝的新裝而已”。也有人說(shuō)Web2.0將是一場(chǎng)變革。無(wú)論這些爭(zhēng)論有沒(méi)有價(jià)值,但我相信,存在就有它的必然性。也許Web2.0更像是一種商業(yè)模式,一個(gè)觀念的變革而非技術(shù)。
          ?????不管怎樣,它來(lái)了,你準(zhǔn)備好了嗎?
          ?????說(shuō)到Web2.0,就會(huì)提到Blog、TAG、SNS、RSS、wiki這些軟件應(yīng)用和xml、ajax等這些新理論和技術(shù)實(shí)現(xiàn)。
          RSS毋容置疑就是其重要的應(yīng)用之一。

          ?????那么什么是RSS?它到底有什么用呢?

          ?????RSS是站點(diǎn)與站點(diǎn)之間共享內(nèi)容的一種簡(jiǎn)易方式(也稱為“聚合內(nèi)容”),通常被用于新聞和其他按順序排列的網(wǎng)站,例如Blog網(wǎng)站。網(wǎng)站提供RSS輸出,有利于讓用戶發(fā)現(xiàn)網(wǎng)站內(nèi)容的更新。網(wǎng)站用戶可以在客戶端借助于類似新聞資訊閱讀器等支持RSS的新聞聚合工具軟件,在不打開(kāi)網(wǎng)站內(nèi)容頁(yè)面的情況下閱讀支持RSS輸出的網(wǎng)站內(nèi)容。
          ?????RSS是基于XML的一種形式。并且所有的RSS文件都要遵守萬(wàn)維網(wǎng)聯(lián)盟(W3C)站點(diǎn)發(fā)布的XML 1.0規(guī)范。具體格式可以查一下RSS 2.0規(guī)范,這里就不再重復(fù)粘貼了。

          下面是我總結(jié)的幾種RSS的技術(shù)實(shí)現(xiàn)代碼:

          1.在線生成RSS聚合頁(yè)。

          (1)創(chuàng)建Rss.aspx
          <%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
          只留下這一行,其余的都刪掉。

          (2)后臺(tái)代碼;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();//自己的業(yè)務(wù)類
          ???DataSet ds=t.GetListByClass(1);//根據(jù)類別得到數(shù)據(jù)
          ???
          ???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實(shí)現(xiàn)方式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頁(yè)的實(shí)現(xiàn)");
          ???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閱讀獲取。

          頁(yè)面代碼:
          ??<P style="FONT-SIZE: 11px">
          ???Feed種子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
          ???顯示條數(shù):<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>

          后臺(tái)代碼:
          ??/// <summary>
          ??/// 獲得要顯示的Feed種子數(shù)據(jù)
          ??/// </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 源數(shù)據(jù)出錯(cuò)!";
          ???}
          ???return strMsg;
          ??}

          ??//獲取按鈕,獲取指定RSS
          ??private void GetFeed_Click(object sender, System.EventArgs e)
          ??{
          ???if(FeedUrl.Text == "")//RSS地址
          ???{
          ????RssFeed.Text = "信息源不能為空,您可刷新重試或聯(lián)系管理員!";
          ????return ;
          ???}??
          ???RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //獲取指定數(shù)目?
          ??}

          3.無(wú)刷新動(dòng)態(tài)更新的在線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
          ???{
          ????//如果是本地改成下面語(yǔ)句直接讀取
          ????//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%">數(shù)據(jù)載入中...</div>
          ?????</td>
          ????</tr>
          ???</table>
          ???</div>
          ??</form>
          ?</body>
          </HTML>

          posted on 2007-03-23 10:27 圣域飛俠 閱讀(223) 評(píng)論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)載
          主站蜘蛛池模板: 湘潭市| 嘉黎县| 顺义区| 九龙城区| 嵩明县| 怀仁县| 临邑县| 会宁县| 石家庄市| 台中县| 马龙县| 阿拉善左旗| 南丰县| 稷山县| 天全县| 金湖县| 图木舒克市| 开江县| 信宜市| 盐山县| 潮安县| 叶城县| 朝阳区| 潜江市| 新和县| 吉林省| 东山县| 腾冲县| 白水县| 灵寿县| 赤城县| 塔河县| 远安县| 平南县| 清丰县| 巢湖市| 靖宇县| 弥渡县| 九龙县| 桐庐县| 石嘴山市|