日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RSS从入门到精通

發(fā)布時間:2023/12/20 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RSS从入门到精通 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?

RSS從入門到精通

標(biāo)簽:?rssfreemarkerstringurl文檔jsp ?9184人閱讀?評論(1)?收藏?舉報 ?分類: RSS 1.???令網(wǎng)絡(luò)跳動的力量 1.1.RSS 最近在瀏覽許多新聞網(wǎng)站時,用戶都會驚奇的發(fā)現(xiàn)一些寫有“XML”字樣的桔黃色圖標(biāo)頻繁出現(xiàn)。如果使用普通瀏覽器的用戶點擊后只能看到一個寫滿了天書的頁面。這是一種最近十分流行的網(wǎng)絡(luò)技術(shù),被稱為RSS(Really Simple Syndication)。通過專用的RSS閱讀工具,用戶能夠快速瀏覽大量的網(wǎng)頁內(nèi)容,如新聞或者網(wǎng)絡(luò)日志。最初RSS主要是應(yīng)用在民間的網(wǎng)絡(luò)日志之中。但由于其易用性迅速受到了歡迎。如今Businessweek、Forbes和New York Times等著名傳統(tǒng)媒體的網(wǎng)站中,也都添加了RSS功能。 使用RSS閱讀工具的用戶可以訂閱自己關(guān)注的網(wǎng)站的內(nèi)容,點擊那個桔黃色的圖標(biāo)便可以得到RSS種子并且保存到閱讀工具中。RSS閱讀工具會自動連接那些網(wǎng)站檢查并顯示更新內(nèi)容的標(biāo)題和摘要內(nèi)容。 看起來時髦、新奇的RSS技術(shù)其實早在1997年左右就已經(jīng)開發(fā)出來,但直到今天才煥發(fā)光彩。這其中一個很大的原因是數(shù)百萬網(wǎng)絡(luò)日志的出現(xiàn)造成了用戶的閱讀困難。越來越多的公司開始關(guān)注RSS技術(shù),除了那些開發(fā)RSS閱讀軟件的廠商外,蘋果公司的Safari瀏覽器就內(nèi)置了RSS閱讀工具。而且微軟也計劃在未來版本的IE瀏覽器中支持RSS閱讀。而另一些RSS服務(wù)提供商則支持在線RSS閱讀功能,Bloglines是它們中最有名的家伙。 1.2.Tag 同RSS技術(shù)類似,Tag也是用來對付越來越多的網(wǎng)絡(luò)信息的。而它的功能則主要是內(nèi)容分類。用過Gmail的用戶應(yīng)該熟悉Tag,在信箱中用戶可以為每封郵件添加多個關(guān)鍵字分類信息,比如工作、廣告、計劃書、已完成等隨心所欲的分類。而檢索時可以按照其中任何一個或者幾個Tag關(guān)鍵字進行搜索。這極大豐富了檢索信息的方法和結(jié)果的準(zhǔn)確性。 例如我曾經(jīng)在某個網(wǎng)站上看到了一篇關(guān)于效力于NBA騎士隊的立陶宛球星伊爾戈斯卡斯講述他家鄉(xiāng)的故事,而當(dāng)我想再次閱讀這篇文章時卻無法記起這個立陶宛人拗口的名字,而對他的家鄉(xiāng)是哪兒也毫無印象。我如何搜索得到這篇文章呢?Tag就能夠幫助我解決這個問題,當(dāng)我看到這篇文章的時候,可以把它的鏈接保存在del.icio.us等網(wǎng)絡(luò)書簽中,然后為其添加一個NBA的Tag。這樣日后當(dāng)我檢索的時候就能夠輕松的把它找到。忘掉那些存儲文件夾吧! Yahoo公司目前十分重視Tag技術(shù),因為它代表了一種新的組織和管理在線信息的方式。它不同于傳統(tǒng)的、針對文件本身的關(guān)鍵字檢索,而是一種模糊化、智能化的分類。這更加符合用戶使用的順滑感和提高檢索結(jié)果的相似程度,將會極大的促進用戶查詢數(shù)字文件的能力,照片、視頻等多媒體數(shù)字文件都可以打上Tag的標(biāo)簽進行管理。Tag本身絕對無法取代Yahoo和Google這樣的搜索引擎,但如果日后Tag的應(yīng)用逐漸增長,那么搜索引擎的使用量一定會減少。 1.3.Wiki 幾乎所有人了解Wiki都是從網(wǎng)絡(luò)上開放百科全書Wikipedia,開始的,在這之前沒有人見過這樣一個任何人都可以動手修改的網(wǎng)站。從2001年開始,成千上萬名志愿者以50種語言完成了這部網(wǎng)絡(luò)百科全書中500萬篇文章,這一切都得感謝Wiki! Wiki一詞來源于夏威夷語的“wee kee wee kee”,原本是“快點快點”的意思。沃德·坎寧安在1995年創(chuàng)建了Wiki的概念和相應(yīng)的服務(wù)系統(tǒng)。這套系統(tǒng)允許那些對編程語言一無所知的人們隨意對一個網(wǎng)站內(nèi)容進行添加、修改。 而如今有軟件開發(fā)商根據(jù)Wiki的理論和機制開發(fā)出了協(xié)同工作軟件。IBM公司的Lotus Notes就屬于同類產(chǎn)品。TWiki公司開發(fā)的開放源代碼Wiki軟件自2001年至今已有3.5萬人次下載。而這些被下載的程序有2/3用于商業(yè)用途,使用者包括迪斯尼、SAP和摩托羅拉這樣聲名赫赫的公司。 2.???什么是RSS? 也許大家是第一次聽到RSS這個概念,那什么是RSS呢?RSS是站點用來和其他站點之間共享內(nèi)容的一種簡易方式(也叫聚合內(nèi)容),通常被用于新聞和其他按順序排列的網(wǎng)站,例如Blog。 一段項目的介紹可能包含新聞的全部介紹等。或者僅僅是額外的內(nèi)容或者簡短的介紹。這些項目的鏈接通常都能鏈接到全部的內(nèi)容。網(wǎng)絡(luò)用戶可以在客戶端借助于支持RSS的新聞聚合工具軟件,在不打開網(wǎng)站內(nèi)容頁面的情況下閱讀支持RSS輸出的網(wǎng)站內(nèi)容。 說得更加簡單一點,RSS就是一種用來分發(fā)和匯集網(wǎng)頁內(nèi)容的XML格式!如果你還是不太明白,沒有關(guān)系,RSS是什么其實基本就不重要,重要的是RSS可以做什么,下面我們就來了解一下,RSS能給我們帶來什么? 2.1.小知識   BLOG:BLOG是Web Log的簡稱。在國內(nèi),人們通常稱它為博客。它是一種作者與讀者以日記風(fēng)格進行交互的中介。在軟件社區(qū),人們以博客形式來共享觀念與思想變得越來越流行,人們開始以博客的形式互相學(xué)習(xí),博客已經(jīng)成了一個技術(shù)交流的場所!如:http://blogs.msdn.com?就是MSDN上的一個blogging。而在國內(nèi)博客中國也已經(jīng)越來越有名。http://www.blogchina.com   XML:XML是Extensible Markup Language的簡寫,一種擴展性標(biāo)識語言。 3.???可以干什么?RSS 1.???????訂閱BLOG(BLOG上,你可以訂閱你工作中所需的技術(shù)文章;也可以訂閱與你有共同愛好的作者的日志,總之,BLOG上你對什么感興趣你就可以訂什么)。 2.???????訂閱新聞(無論是奇聞怪事、明星消息、體壇風(fēng)云,只要你想知道的,都可以訂閱)。 你再也不用一個網(wǎng)站一個網(wǎng)站,一個網(wǎng)頁一個網(wǎng)頁去逛了。只要這將你需要的內(nèi)容訂閱在一個RSS閱讀器中,這些內(nèi)容就會自動出現(xiàn)你的閱讀器里,你也不必為了一個急切想知道的消息而不斷的刷新網(wǎng)頁,因為一旦有了更新,RSS閱讀器就會自己通知你! 4.???怎樣發(fā)布RSS內(nèi)容 首先你需要理解一點支持RSS的技術(shù)。 1.RSS是包含你要發(fā)布的信息(標(biāo)題、簡介、內(nèi)容等信息)的標(biāo)準(zhǔn)的XML文件。它遵循所謂的RSS技術(shù)規(guī)范定義的格式。 2.RSS文件本身定義的是內(nèi)容,并沒有定義內(nèi)容的顯示方式。通常要通過RSS閱讀器來解析內(nèi)容,并顯示出來。看天下RSS閱讀器就是用來解讀RSS內(nèi)容的。 3.由于Blog等的發(fā)展,使得創(chuàng)建RSS文件變得很容易。 怎樣讓更多的人接收到你的RSS?到目前為止,大多數(shù)人并不對RSS很熟悉。但由于RSS避免了無用的廣告和垃圾信息,這種方式在逐漸地普及開來。 那么你在采用RSS的時候,就應(yīng)該盡可能地給你的用戶講解什么是RSS,以及它有哪些優(yōu)點。 5.???RSS閱讀器 目前,RSS閱讀器基本可以分為兩類。 第一類大多數(shù)閱讀器是運行在計算機桌面上的單機應(yīng)用程序,通過所訂閱網(wǎng)站和博客(blog)中的新聞供應(yīng),可自動、定時地更新新聞標(biāo)題。在該類閱讀器中,有Awasu、FeedDemon和RSSReader這三款流行的單機版閱讀器都提供免費試用版和付費高級版,另外,新華網(wǎng)在不久前也推出了一款RSS閱讀器,它不僅是完全是中文界面,而且目前還是完全的免費軟件!(后面我們就將以這款軟件為例,為大家介紹怎樣來使用RSS閱讀器)。 第二類新聞閱讀器通常是內(nèi)嵌于已在計算機中運行的應(yīng)用程序中。例如,NewsGator內(nèi)嵌在微軟的Outlook中,所訂閱的新聞標(biāo)題位于Outlook的收件箱文件夾中。另外,Pluck內(nèi)嵌在Internet Explorer瀏覽器中! 6.???推” 技術(shù)遠(yuǎn)勝于電子郵件的推廣模式RSS“ 幾乎每一個內(nèi)容提供者都有過用一個長長的電子郵件地址簿發(fā)布新信息的經(jīng)驗。RSS“推”技術(shù)將從此改變這個現(xiàn)狀。利用RSS閱讀器接收“推”來的新信息不僅消除了“垃圾郵件”充斥郵箱的煩惱,而且使內(nèi)容接收者更方便地閱讀和管理信息。因此,盡管利用電子郵件的推廣方式還將在很長時間內(nèi)存在,用戶將越來越偏好使用RSS“推” 技術(shù)的內(nèi)容提供商。 RSS優(yōu)于電子郵件還體現(xiàn)在網(wǎng)絡(luò)安全上。由于沒有不速之客的“垃圾郵件”,也沒有郵件提供商(象YAHOO,MSN)的“強力過濾”,用戶將有十分的信心他們看到的就是他們訂閱的,不多也不少。 不僅如此,即使到達(dá)用戶信箱中的合法推廣信息也還有一大部分由于與少數(shù)“漏網(wǎng)”的垃圾郵件和眾多其它郵件的混合而被用戶忽視甚至直接刪除。更不用說當(dāng)用戶因為信箱裝滿了垃圾而轉(zhuǎn)用新地址時,絕大多數(shù)情況下是想不起來在所有內(nèi)容提供者那里更新地址的。這些無疑都是對內(nèi)容提供者來說巨大的浪費! 我的朋友們有很多是網(wǎng)上內(nèi)容發(fā)布者,他們都發(fā)現(xiàn)新用戶注冊后不出幾個月,這些郵件地址就失效了,而他們也就永遠(yuǎn)失去了和這些用戶聯(lián)絡(luò)的渠道。所以,我建議所有內(nèi)容提供者都認(rèn)真地考慮利用RSS“推” 技術(shù)來與用戶建立持久穩(wěn)定的關(guān)系,這在長期來講是絕對有利的。 最后,RSS優(yōu)于電子郵件還在于目前的一些RSS內(nèi)容聚合商(如看天下www.kantianxia.com)幫助支持RSS“推”技術(shù)的內(nèi)容提供者向用戶作宣傳。如看天下的“RSS內(nèi)容源索引”就是一個使用戶發(fā)現(xiàn)并接受新內(nèi)容源的增值平臺 - 這與搜索引擎把內(nèi)容聚合起來向用戶作推廣是一個概念。 目前,越來越多的用戶已經(jīng)開始認(rèn)識并接受RSS技術(shù)。我衷心希望所有的內(nèi)容提供者都能順應(yīng)這個潮流,在這個新的平臺上取得更好的成績。 7.???認(rèn)識RSS 以下內(nèi)容是為了讓大家更加了解RSS,如果你對其不感興趣,完全可以不看,它不會對你使用RSS閱讀產(chǎn)生多大的影響。 7.1.Feed(提要) 博客以RSS文檔形式為其內(nèi)容提供一個提要,該RSS文檔可以通過眾所周知的URL獲得。RSS文檔是一個XML文件,它包含大量離散的新聞項,如某個博客中的入口項。由于RSS是XML格式文件,所以它很容易被其它程序所使用。 RSS聚合器是一個讀取RSS文檔并顯示新聞項的程序。大多數(shù)聚合器只要輸入RSS的URL,使得預(yù)定提要成為可能。 RSS使閱讀博客便得容易。大多數(shù)經(jīng)常閱讀博客的開發(fā)人員都使用某種類型的聚合器來幫助他們有效地篩選提要內(nèi)容。聚合器使得閱讀博客的感覺就象是在閱讀電子郵件,因為它們突出新聞項并將新聞項進行緩沖處理以便離線閱讀。 還有一些在線RSS聚合器將RSS提要捆綁到某個單獨的網(wǎng)站。其優(yōu)點是易于設(shè)置并且可以從任何計算機存取你的提要內(nèi)容。當(dāng)然,其缺點也是顯而易見的,那就是在閱讀時必須始終保持連接。 RSS是博客成為一種強大的新型信息交流形式之根本所在。在網(wǎng)志出現(xiàn)之前,大多數(shù)開發(fā)人員為了要查找到需要的內(nèi)容,通常要花大量時間來篩選掉那些令人討厭的無關(guān)的信息。 博客通過讓讀者選擇所要閱讀的提要,將控制權(quán)交給讀者,從而有效地構(gòu)建自己的個性化內(nèi)容流。 7.2.RSS版本 RSS的版本有很多個,0.90、0.91、0.92、0.93、0.94、1.0 和 2.0。要理解它們需要了解一些有關(guān)它們的歷史背景。最初Netscape創(chuàng)建了RSS的最初版本0.90,起初的名字是“RDF Site Summary”或者“Rich Site Summary”(規(guī)范中說前者是正式名稱)。Netscape創(chuàng)建RSS0.90用于其Web門戶,這個時候,其他人看到了RSS的使用潛力。Userland Software是第一個開始將 RSS 用于其網(wǎng)志商業(yè)產(chǎn)品者之一。 版本?0.90 在很大程度上基于 W3C 的 Resource Description Framework (RDF)。許多人都認(rèn)為 RDF 過于復(fù)雜,因此都建議出一個免費的簡化版本 0.91。這個任務(wù)恰好就給了 Userland Software。Userland Software 便繼續(xù)發(fā)展 RSS 的簡化版本,隨后出臺的版本包括:0.92、0.93 和 0.94。為了強調(diào)其所做的簡化工作,他們將 RSS 的全稱定為“Really Simple Syndication”。 正當(dāng)Userland Software繼續(xù)專注于其簡化工作時,另外一組開發(fā)人員在復(fù)興最初的RDF版本(0.90),因為RSS號稱自己更靈活。他們最終發(fā)布了一個RSS 1.0的版本,其正式名稱還是“RDF Site Summary”。由于使用RDF,這個版本完全不同于 Userland Software所控制的版本。Userland Software當(dāng)然不太愿意看到RSS 1.0似乎要取代其0.94版本的事實,于是出了一個新版本,并將版本號一下子跳到了2.0。 這就是今天的這種局面,形成了兩個主要的競爭版本:一個基于RDF1.0,而另一個則是由Userland Software所開發(fā)的2.0,由于它們兩個都共用相同的名字。就成為一種可怕的混亂,因為版本號導(dǎo)致人們誤認(rèn)為2.0是1.0的改進版本,而實際上它們是兩個目標(biāo)完全不同的規(guī)范。現(xiàn)在,另一組開發(fā)人員已經(jīng)下狠心著手解決這種混亂問題,通過定義新的摘要(syndication)規(guī)范來與 RSS名字的隨意性決裂。這個解決方案稱為 Atom(原子)項目。 7.3.Atom(原子) Atom是一個項目的名字,主要是開發(fā)一個新的博客摘要格式以解決目前RSS存在的問題(混亂的版本號,不是一個真正的開放標(biāo)準(zhǔn),表示方法的不一致,定義貧乏等等)。Atom 希望提供一個清晰的版本以解決每個人的需要,其設(shè)計完全不依賴于供貨商,任何人都可以對之進行自由擴展,完整詳細(xì)說明。 除了定義新的摘要格式之外,Atom還希望定義一個標(biāo)準(zhǔn)的檔案文件格式和一個標(biāo)準(zhǔn)的博客編輯API(Atom API)。 其實RSS1.0和2.0格式所包含的核心信息是相同的,只是其結(jié)構(gòu)不一樣罷了,這里我們不再繼續(xù)深入的討論這個問題,有興趣的朋友可以去博客中國里了解相關(guān)知識! 7.4.blogroll blogroll是博客頁面提要的集合,大多數(shù)博客在其個人頁面上都提供blogroll。這就允許讀者連接到其他趣味和寫作風(fēng)格相投的人的網(wǎng)頁上。Blogroll方便了網(wǎng)絡(luò)上的溝通。通過使用Outline Processor Markup Language(OPML),人們可以用XML 格式文件交換blogroll。 大多數(shù)網(wǎng)志引擎都自己管理blogroll,每當(dāng)讀者請求blogroll時都自己產(chǎn)生相應(yīng)的XML格式。同樣,大多數(shù)聚合器(RSS閱讀器)都能導(dǎo)入blogroll并自動預(yù)定所包含的摘要。 8.???RSS 2.0 8.1.RSS2.0新特性 RSS 2.0 建立在 RSS 0.91 規(guī)范的基礎(chǔ)上。它是向后兼容的,因此任何處理 RSS 2.0 的工具應(yīng)該也能夠處理 0.91 提要。升級后的規(guī)范增加了少量元素,比如 <cloud> 和 <guid>。 它也去掉了一些限制。在過去,<link> 和 <url> 元素只能是 http 或 ftp,現(xiàn)在可以使用任何有效的 URI。在 RSS 0.91 中,每個頻道只能包含 15 個項,而且元素的長度也有限制,現(xiàn)在這些限制都取消了。不過仍然應(yīng)該小心使用較大的值,因為它們可能對老的應(yīng)用程序造成問題。 不過更大的變化是能夠使用名稱空間擴展這種格式。RSS 2.0 支持名稱空間,一種增加規(guī)范中沒有的元素的標(biāo)準(zhǔn)方法。只要定義在一個名稱空間中,提要可以包含新的元素。 8.2.RSS 2.0 概述 RSS 是一種 XML 方言,用于連鎖 Web 內(nèi)容和元數(shù)據(jù)。RSS 0.91 是幾種可用版本中最常用的一種。對于新的 RSS 提要,更好的辦法是使用 2.0 版,因為這是現(xiàn)行的規(guī)范,而且如前所述,它與 0.91 向后兼容。 Dave Winer 編寫了規(guī)范的 2.0 版。規(guī)范的修改可能變得難以使用,或者損害已有的應(yīng)用程序,他有意識地避免了這種情況。Winer 總結(jié)了他的思想:“保持簡單。這就是 RSS 的價值所在。任何稍微了解 HTML 的人都能夠理解 RSS。這一點極其重要!” 該規(guī)范在 Creative Commons 許可下發(fā)布(請參閱參考資料)。這意味著您可以免費復(fù)制和分發(fā)該規(guī)范,并進行衍生工作,而且可以自由地用于商業(yè)工作。一個咨詢委員會負(fù)責(zé)更新規(guī)范、推廣規(guī)范和編寫文檔。 8.3.發(fā)現(xiàn) RSS 提要 可以使用搜索引擎查找 RSS 格式的內(nèi)容。比方說使用 Google 時,您可以在查找中增加“filetype:rss”以搜索 .rss 文件中的查找項。 專門的搜索引擎使內(nèi)容搜索更加容易。Feedster 監(jiān)視 weblog 并允許您通過一個日志項索引查找,按照相關(guān)性、日期、等級(logrank)查看。當(dāng)您在搜索時,Feedster 按照您的要求創(chuàng)建一個 RSS 提要。這個提要可以增加到您的新聞閱讀器中,以便您能夠看到所有與搜索請求有關(guān)的最新活動,您甚至不需要離開新聞閱讀器。 DayPop 搜索新聞、blog 和 RSS 提要。它讓您在 weblog 世界跟蹤流行的新聞。它提供了目前最流行的 40 個 weblog 鏈接。這是全世界最流行文章的鏈接。它創(chuàng)建了一個 weblog 中所用最熱門詞匯的列表。它還根據(jù)引用對 weblog 評級,提供最受其他 weblogger 歡迎的 weblog 列表。您也可以自定義搜索。評級列表和自定義搜索都有 RSS 提要形式,可以導(dǎo)入您的新聞閱讀器。 8.4.RSS 文件形式 RSS 文件由一個 <channel> 元素及其子元素組成。除了頻道內(nèi)容本身之外,<channel> 還以項的形式包含表示頻道元數(shù)據(jù)的元素 —— 比如 <title>、<link> 和 <description>。項通常是頻道的主要部分,包含經(jīng)常變化的內(nèi)容。 8.4.1.????頻道 頻道一般有三個元素,提供關(guān)于頻道本身的信息: <title>:頻道或提要的名稱。 <link>:與該頻道關(guān)聯(lián)的 Web 站點或者站點區(qū)域的 URL。 <description>:簡要介紹該頻道是做什么的。 許多頻道子元素都是可選的。常用的 <image> 元素包含三個必需的子元素: <url>:表示該頻道的 GIF、JPEG 或 PNG 圖像的 URL。 <title>:圖象的描述。當(dāng)頻道以 HTML 呈現(xiàn)時,用作 HTML <image> 標(biāo)簽的 ALT 屬性。 <link>:站點的 URL。如果頻道以 HTML 呈現(xiàn),該圖像作為到這個站點的鏈接。 <image> 還有三個可選的子元素: <width>:數(shù)字,表示圖象的像素寬度,最大值是 188,默認(rèn)值為 88。 <height>:數(shù)字,表示圖象的像素高度。最大值是 400,默認(rèn)值為 31。 <description>:包含文本,在呈現(xiàn)時可以作為圍繞著該圖像形成的鏈接元素的 title 屬性。 此外還可以使用許多其他可選的頻道元素。多數(shù)都是不言自明的: <language>:en-us <copyright>:Copyright 2003, James Lewin <managingEditor>:dan@spam_me.com (Dan Deletekey) <webMaster>:dan@spam_me.com (Dan Deletekey) <pubDate>:Sat, 15 Nov 2003 0:00:01 GMT <lastBuildDate>:Sat, 15 Nov 2003 0:00:01 GMT <category>:ebusiness <generator>:Your CMS 2.0 <docs>:http://blogs.law.harvard.edu/tech/rss <cloud>:允許進程注冊為“cloud”,頻道更新時通知它,為 RSS 提要實現(xiàn)了一種輕量級的發(fā)布-訂閱協(xié)議。 <ttl>:存活時間 是一個數(shù)字,表示提要在刷新之前緩沖的分鐘數(shù)。 <rating>:關(guān)于該頻道的 PICS 評價。 <textInput>:定義可與頻道一起顯示的輸入框。 <skipHours>:告訴聚集器哪些小時的更新可以忽略。 <skipDays>:告訴聚集器那一天的更新可以忽略。 8.4.2.???? 項通常是提要中最重要的部分。每個項都可以關(guān)于某個 weblog、完整文檔、電影評論、分類廣告或者任何希望與頻道連鎖的內(nèi)容的記錄。頻道中的其他元素可能不變,但項經(jīng)常發(fā)生變化。 您可以有任意多個項。以前的規(guī)范限值為 15 個項,如果要保持向后兼容這仍然是一個很好的上限。 8.4.3.????新聞項的元素 每個項通常包含三個元素: <title>:這是項的名稱,在標(biāo)準(zhǔn)應(yīng)用中被轉(zhuǎn)換成 HTML 中的標(biāo)題。 <link>:這是該項的 URL。title 通常作為一個鏈接,指向包含在 <link> 元素中的 URL。 <description>:通常作為 link 中所指向的 URL 的摘要或者補充。 所有的元素都是可選的,但是一個項至少要么 包含一個 <title>,要么包含一個 <description>。 項還有其他一些可選的元素: <author>:作者的 e-mail 地址。 <category>:支持有組織的記錄。 <comments>:關(guān)于項的注釋頁的 URL。 <enclosure>:支持和該項有關(guān)的媒體對象。 <guid>:唯一與該項聯(lián)系在一起的永久性鏈接。 <pubDate>:該項是什么時候發(fā)布的。 <source>:該項來自哪個 RSS 頻道,當(dāng)把項聚合在一起時非常有用。 清單 1 是一個 RSS 2.0 文件的例子。注意,頻道包含在 <rss version="2.0"> 中。這是一個非常基本的例子,說明了項和圖像如何包含在頻道中。所示的元素都是最常用的頻道子元素。 清單 1. 示例 RSS 2.0 文件 <?xml version="1.0"?> <rss version="2.0"> ?? <channel> ?? <title>The channel's name goes here</title> ?? <link>http://www.urlofthechannel.com/</link> ?? <description>This channel is an example channel for an article. ?? </description> ?? <language>en-us</language> ?? <image> ???? <title>The image title goes here</title> ???? <url>http://www.urlofthechannel.com/images/logo.gif</url> ???? <link>http://www.urlofthechannel.com/</link> ?? </image> ?? <item> ???? <title>The Future of content</title> ???? <link>http://www.itworld.com/nl/ecom_in_act/11122003/</link> ???? <description> The issue of people distributing and reusing ???? digital media is a problem for many businesses. It may also be ???? a hidden opportunity. Just as open source licensing has opened ???? up new possibilities in the world of technology, it promises to do ???? the same in the area of creative content.</description> ?? </item> ?? <item> ???? <title>Online Music Services - Better than free?</title> ???? <link>http://www.itworld.com/nl/ecom_in_act/08202003/</link> ???? <description>More people than ever are downloading music from ???? the Internet. Many use person-to-person file sharing programs like ???? Kazaa to share and download music in MP3 format, paying nothing. ???? This has made it difficult for companies to setup online music ???? businesses. How can companies compete against free?</description> ?? </item> ?</channel> </rss> 8.5.相關(guān)工具 由于 RSS 的普及,出現(xiàn)了許多工具,使您能夠基本上在任何環(huán)境中使用這些文件: Java 技術(shù):可在 Sun 站點上找到的一個 RSS Utilities Package,支持在 JavaServer Pages 中使用 Tag Library。它還包括一個 RSS 解析器。 Perl:已經(jīng)有幾種 Perl 工具處理 RSS。XML::RSS 提供了創(chuàng)建和維護 RSS 文件的一個框架。它支持在常用版本之間的轉(zhuǎn)換。 Python:RSS.py 是一組通過 Python 使用 RSS 頻道的類。 此外,許多內(nèi)容管理和 weblog 工具也直接支持 RSS。多數(shù) weblog 工具,包括 Movable Type、Blogger 和 Radio Userland 都支持 RSS。一些內(nèi)容管理系統(tǒng),包括 Zope 和 CityDesk 現(xiàn)在也支持它了。 8.6.擴展 RSS RSS 2.0 有許多可選元素,包括多數(shù)頻道都需要的那些元素。但是它還支持?jǐn)U展性,因此您可以使用規(guī)范中沒有的元素。不過,RSS 2.0 規(guī)范并沒有花費多少時間定義如何實現(xiàn)擴展。關(guān)于擴展性,規(guī)范中總結(jié)為:“RSS 提要可以包含本頁中沒有描述的元素,只要這些元素定義在一個名稱空間中。” 這就留下了很大的想像空間!所幸的是,規(guī)范中包含一個例子,您可以參考目前使用的幾個例子。 基本的思想是您可以增加需要的標(biāo)簽 —— 但是,增加帶有多種含義的元素太容易了。使用您的頻道的人們可能并不知道某個標(biāo)簽是什么含義。比如,如果我要在一個頻道中使用 <analog> 標(biāo)簽,它的含義就不很清楚。Web 專家可能認(rèn)為這個標(biāo)簽指的是 Analog,它是最流行的 Web log 文件分析器。科幻迷可能認(rèn)為這個標(biāo)簽是關(guān)于 Analog 的,一本經(jīng)典的科幻雜志。音樂家可能認(rèn)為它指的是流行的合成器類型,生物學(xué)家認(rèn)為這是一種器官,電子工程師認(rèn)為是一種電路。含糊性使人們很難理解標(biāo)簽的含義。 因此,RSS 允許您增加所喜歡的任何標(biāo)簽,但是要求必須和名稱空間一起使用。這樣有助于澄清標(biāo)簽的含義。 再回到 <analog> 的例子,我可能希望創(chuàng)建一組關(guān)于電子商務(wù)的標(biāo)簽,并讓 <analog> 標(biāo)簽作為一個“e-business”元素。為此,我增加如下的名稱空間: xmlns:ebusiness="http://www.lewingroup.com/ebusinessChannel" 這就創(chuàng)建了一個名為“ebusiness”的名稱空間,并表明這個名稱空間的文檔在我的站點上。為了使用 <analog> 標(biāo)簽,我可以使用這種格式:<ebusiness:analog>。這樣就能與其他類似的含義中區(qū)分開來,比如 <sciencefiction:analog> 或 <synthesizers:analog>。 關(guān)于擴展性,一個更實際的例子可以在 RSS 2.0 規(guī)范的示例文件中找到: 清單 2. RSS 2.0 規(guī)范示例文件中的名稱空間 <?xml version="1.0"?> <!-- RSS generated by Radio UserLand v8.0.5 on 9/30/2002; 4:00:00 AM Pacific --> <rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule"> ?<channel> ?? <title>Scripting News</title> ?? <link>http://www.scripting.com/</link> ?? <description>A weblog about scripting and stuff like that.</description> ?? <language>en-us</language> ?? <blogChannel:blogRoll> ???? http://radio.weblogs.com/0001015/userland/scriptingNewsLeftLinks.opml ?? </blogChannel:blogRoll> ???? <item> ???? <description>Joshua Allen: ???? <a href="http://www.netcrucible.com/blog/2002/09/29.html#a243"> ???? Who loves namespaces?</a></description> ???? <pubDate>Sun, 29 Sep 2002 19:59:01 GMT</pubDate> ???? <guid> ???? http://scriptingnews.userland.com/backissues/2002/09/29#When:12:59:01PM ???? </guid> ???? </item> ?</channel> </rss> 在這個例子中,定義了一個稱為 blogChannel 的名稱空間。它指向一個文檔,該文檔解釋了幾種常見于 weblog 的新元素的用法。其中之一是 <blogroll>。文檔說明,blogroll 是 weblog 中的一個鏈接集合,指向與您的 weblog 內(nèi)容相關(guān)的站點。 <blogChannel:blogRoll> 標(biāo)簽提供了用戶或軟件所需要的信息,知道 blogRoll 是一個定義在 blogChannel 名稱空間中的元素,而且可以找到這個文檔的位置。 同樣,RSS 2.0 只對不 屬于規(guī)范的元素要求名稱空間。所有的基本標(biāo)簽都假定在 RSS 2.0 名稱空間中。這使得這種格式更容易使用,因為除非需要擴展 RSS,否則您完全不需要知道名稱空間。 8.7.RSS2.0標(biāo)記手冊 注:英文原版請參見http://blogs.law.harvard.edu/tech/rss RSS是 Really Simple Syndication的縮寫(對rss2.0而言,是這三個詞的縮寫,對rss1.0而言則是RDF Site Summary的縮寫,1.0與2.0走的是兩個體系) RSS 基于XML,所有的 RSS 必須遵循w3c網(wǎng)站上公布的XML 1.0 規(guī)范。 在一個RSS文檔中,根元素是<rss>,帶有一個必備屬性version,用以指明該文檔遵循的rss規(guī)范,如果rss文檔遵循本規(guī)范,則version值必須是2.0。 <rss>元素只有一個子元素,包含關(guān)于頻道的一些信息。頻道(channel)是整個blog,項(item)指一篇文章或日志(也有稱這為post)。 8.7.1.????元素channel的子元素列表RSS2.0
元素(Element) 描述(Description) 值域 重要性 舉例(Example)
title 頻道名稱 ? 必備 GoUpstate.com News Headlines
link 頻道的URL ? 必備 http://www.goupstate.com/
Description 頻道的描述 ? 必備 The latest news from GoUpstate.com, a Spartanburg Herald-Journal Web site.
? ? ? ? ?
language 頻道文章所用語言, 可用netscape或w3c推薦的列表 可選 en-us
copyright 頻道內(nèi)容的版權(quán)說明 ? 可選 Copyright 2002, Spartanburg Herald-Journal
managingEditor 責(zé)任編輯的email ? 可選 geo@herald.com (George Matesky)
webMaster 負(fù)責(zé)頻道技術(shù)事務(wù)的網(wǎng)站管理員email ? 可選 betty@herald.com (Betty Guernsey)
pubDate 頻道內(nèi)容發(fā)布日期,格式遵循RFC822格式(年份可為2們或4位) ? 可選 Sat, 07 Sep 2002 00:00:01 GMT
lastBuildDate 頻道內(nèi)容最后的修改日期 ? 可選 Sat, 07 Sep 2002 09:42:31 GMT
category 指定頻道所屬的一個或幾個類別 ? 可選 <category>Newspapers</category>
generator 生成該頻道的程序名 ? 可選 MightyInHouse Content System v2.3
docs 指向該RSS文件所用格式說明的URL ? 可選 http://blogs.law.harvard.edu/tech/rss
cloud Allows processes to register with a cloud to be notified of updates to the channel, implementing a lightweight publish-subscribe protocol for RSS feeds. More info here. ? 可選 <cloud domain="rpc.sys.com" port="80" path="/RPC2" registerProcedure="pingMe" protocol="soap"/>
ttl 有效期,用以指明該頻道可被緩存的最長時間 分鐘為單位 可選 <ttl>60</ttl>
image 指定一個 GIF或JPEG或PNG圖片,用以與頻道一起顯示 ? 可選 ?
rating 這個頻道的分級(主要指成人、限制、兒童等) ? 可選 ?
textInput 指定一個text輸入框供用戶輸入,具體信息及功能未定。 ? 可選 ?
skipHours 提示新聞聚合器,那些小時時段它可以跳過。 ? 可選 ?
skipDays 提示新聞聚合器,那些天它可以跳過。 ? 可選 ?
8.7.2.????元素channel的子元素image的子元素列表RSS2.0
元素(Element) 描述(Description) 值域 重要性 舉例(Example)
url 圖片的url ? 必備 ?
title 圖片的標(biāo)題,用于http的alt屬性 ? 必備 ?
link 網(wǎng)站的url(實際中常以頻道的url代替) ? 必備 ?
width 圖片的寬度(象素為單位) 最大144,默認(rèn)88 可選 ?
height 圖片的高度(象素為單位) 最大400,默認(rèn)31 可選 ?
description 用于link的title屬性 ? 可選 ?
8.7.3.????元素channel的子元素cloud的子元素列表RSS2.0
元素(Element) 描述(Description) 值域 重要性 舉例(Example)
domain Cloud程序所在機器的域名或IP地址 ? ? radio.xmlstoragesystem.com
port 訪問clound程序所通過的端口 ? ? 80
path 程序所在路徑(不一定是真實路徑) ? ? /RPC2
registerProcedure 注冊的可提供的服務(wù)或過程 ? ? xmlStorageSystem.rssPleaseNotify
protocol 協(xié)議 xml-rpc, soap , http-post 之一 ? xml-rpc
8.7.4.????元素channel的子元素textInput的子元素列表RSS2.0
元素(Element) 描述(Description) 值域 重要性 舉例(Example)
title Submit按鈕的標(biāo)簽 ? 必備 ?
description 解釋text輸入?yún)^(qū) ? 必備 ?
name Text area對象的名字 ? 必備 ?
link 處理提交的請求的cgi程序 ? 必備 ?
8.7.5.????開發(fā)RSS2.0接口注意:時間字段必須是rfc 822格式 最早開發(fā)WebLucene時:RSS 2.0數(shù)據(jù)輸出的時間字段是ISO格式:2004-12-25 21:48:09 因此有的RSS解析會出錯。正確的應(yīng)該是這種格式: <pubDate>Sun, 26 Dec 2004 21:48:09 +0800</pubDate> 查了一下,原來這種時間格式是:rfc822標(biāo)準(zhǔn),例如 Thu, 21 Dec 2000 16:01:07 +0200 9.???開發(fā)教程RSS RSS(Really Simple Syndication,真正簡單的連鎖)是一種 Web 內(nèi)容連鎖格式。RSS 成為通過 Web 連鎖新聞內(nèi)容的標(biāo)準(zhǔn)格式。作為最近與 Sun Microsystems 簽署合同的一部分,我負(fù)責(zé)開發(fā)任何懂得 RSS、JavaServer Pages 和 HTML 的人便可以使用的“JSP 標(biāo)簽庫”。taglib 主要面向用 RSS 收集新聞內(nèi)容的 Web 站點的非技術(shù)性編輯人員。我的目標(biāo)是開發(fā)在 Web 頁中將簡化使用 RSS 內(nèi)容(0.91、0.92 和 2.0 版本)的 JSP 標(biāo)簽庫。 RSS Utilities Package 是該項目的結(jié)果。它包括一套自定義 JSP 標(biāo)簽,這些標(biāo)簽彌補了 RSS Utilities Tag library 和靈活的 RSS 語法分析器。該文檔說明了如何使用該語法分析器和 RSS Utilities Package 提供的庫。在這里單擊便可以下載第一個版本。該 zip 文件包含一個 jar 文件 rssutils.jar(該文件包含使用該工具所需的類)和一個 tld 文件(該文件定義從 RSS 文檔中提取信息的 JSP 自定義標(biāo)簽)。 安裝 taglib ? 盡管使用標(biāo)簽庫很容易,但在安裝時要求您了解 Web 服務(wù)器的工作原理和如何去配置它。第一步是下載并解壓包。一旦 zip 文件已經(jīng)解壓了,在 Web 應(yīng)用程序的 /WEB-INF/lib 目錄中放置一份 rssutils.jar 和 rsstaglib.tld 的副本。將下面的 taglib 定義添加至 Web 應(yīng)用程序的 /WEB-INF/web.xml 文件: <taglib> <taglib-uri>/WEB-INF/rssutils.tld</taglib-uri> <taglib-location>/WEB-INF/rssutils.tld</taglib-location> </taglib> 9.1.使用taglib 一旦 taglib 已經(jīng)安裝在 Web 應(yīng)用程序中,按照以下步驟便可以在 JSP 頁面中使用 taglib。首先,將下面一行添加至 JSP 頁面的頂部: <%@ taglib uri="/WEB-INF/rssutils.tld" prefix="rss" %> 其次,使用 feed 標(biāo)簽將 RSS feed 添加至 JSP 頁面,如下例所示: <rss:feed url="http://servlet.java.sun.com/syndication/rss_java_highlights-10.xml" feedId="javaSunCom"/> "feed" 標(biāo)簽的 url 屬性必須包含到 RSS 文檔的 URL。"feed" 標(biāo)簽的 feedId 屬性是任意的,可以設(shè)置為任何值。然而,我們建議該屬性在標(biāo)識 RSS feed 時要直觀。如果應(yīng)用程序在防火墻后面,可以使用名為 proxyAddress 和 proxyPort 的 "feed" 標(biāo)簽代理屬性來設(shè)置代理屬性。如果不知道代理服務(wù)器地址代理端口,請與網(wǎng)絡(luò)管理員聯(lián)系。下面是一個例子: <rss:feed url="http://servlet.java.sun.com/syndication/rss_java_highlights-10.xml" feedId="example1" proxyAddress="129.149.246.4" proxyPort="8080"/> 一旦將一個或多個 RSS feed 添加到頁面,您應(yīng)能使用剩余的一套標(biāo)簽來從 feed 中提取幾乎任何信息。下面是一個例子,說明如何提取在上面添加的 RSS feed 頻道的標(biāo)題: <rss:channelTitle feedId="javaSunCom"/> 9.2.Taglib 示例 9.2.1.????例 1 (RSS 0.91): <rss:feed url="http://servlet.java.sun.com/syndication/rss_java_highlights-XYZCompany-10.xml" feedId="example1"/> <b>Image: </b><rss:channelImage feedId="example1" asLink="true"/><br> <b>Title: </b><rss:channelTitle feedId="example1"/><br> <b>Link: </b><rss:channelLink feedId="example1" asLink="true"/><br> <b>Description: </b><rss:channelDescription feedId="example1"/><br> <ul> <li><rss:itemTitle feedId="example1" index="0"/><br> <rss:itemDescription feedId="example1" index="0"/><br><br> <li><rss:itemTitle feedId="example1" index="1"/><br> <rss:itemDescription feedId="example1" index="1"/><br> </ul> 9.2.2.????例 2 (RSS 0.92): <rss:feed url="http://static.userland.com/gems/backend/gratefulDead.xml" feedId="example2"/> <b>Image: </b><rss:channelImage feedId="example2"/><br> <b>Title: </b><rss:channelTitle feedId="example2"/><br> <b>Link: </b><rss:channelLink feedId="example2" asLink="true"/><br> <b>Description: </b><rss:channelDescription feedId="example2"/><br> <ul> <rss:forEachItem feedId="example2"> <li><rss:itemDescription feedId="example2"/><br><br> </rss:forEachItem> </ul> 9.2.3.????例 3 (RSS 2.0): <rss:feed url="http://static.userland.com/gems/backend/rssTwoExample2.xml" feedId="example3"/> <b>Image: </b><rss:channelImage feedId="example3"/><br> <b>Title: </b><rss:channelTitle feedId="example3"/><br> <b>Link: </b><rss:channelLink feedId="example3" asLink="true"/><br> <b>Description: </b><rss:channelDescription feedId="example3"/><br> <b>Copyright: </b><rss:channelCopyright feedId="example3"/><br> <b>Docs: </b><rss:channelDocs feedId="example3"/><br> <b>Generator: </b><rss:channelGenerator feedId="example3"/><br> <b>Language: </b><rss:channelLanguage feedId="example3"/><br> <b>Last Build Date: </b><rss:channelLastBuildDate X-Virus: 1 feedId="example3"/><br> <b>Managing Editor: </b><rss:channelManagingEditor feedId="example3"/><br> <b>Pub Date: </b><rss:channelPubDate feedId="example3"/><br> X-Virus: 1 <b>Skip Days: </b><rss:channelSkipDays feedId="example3"/><br> <b>Skip Hours: </b><rss:channelSkipHours feedId="example3"/><br> <b>TTL: </b><rss:channelTTL feedId="example3"/><br> <ul> <rss:forEachItem feedId="example3" startIndex="2" endIndex="4"> <li><rss:itemDescription feedId="example3"/><br><br> </rss:forEachItem> </ul> 9.3.如何使用 RssParser? 從某種程度上看,語法分析器是該項目的副產(chǎn)品。盡管語法分析器是用標(biāo)簽庫來開發(fā)的,但是它完全是自包含的,它可以在 Java 應(yīng)用程序中使用。然而,要做到這一點,顯然您至少需要了解如何編寫基本的 Java 代碼。(如果您了解如何用 Java 語言編寫 Hello World,就沒什么問題了。) 首先下載并解壓包。一旦將 rssutils.jar 添加至您的類路徑,就請使用 RssParserFactory 創(chuàng)建 RssParser 接口的實例: RssParser parser = RssParserFactory.createDefault(); Rss rss = parser.parse(new URL("http://mydomain.com/document.rss")); 語法分析器生成的 RSS 對象是位于提供的 URL 中的 RSS 文檔的 Java 對象表示。使用 RSS 對象提供的方法以獲得其它 RSS 對象的句柄,如 Channels 和 Items。RssParser 也能夠分析 File 對象和 InputStream 對象。 9.4.使用RSSLibJ進行RSS開發(fā) RSS是一個標(biāo)準(zhǔn)的XML文件,Rss閱讀器可以讀取這個XML文件獲得文章的信息,使用戶可以通過Rss閱讀器而非瀏覽器閱讀Blog,我們只要動態(tài)生成這個XML文件便可以了。RSSLibJ是一個專門讀取和生成RSS的小巧實用的Java庫,大小僅25k,可以從http://sourceforge.net/projects/rsslibj/下載rsslibj-1_0RC2.jar和它需要的EXMLjar兩個文件,然后復(fù)制到web/WEB-INF/lib/下。 使用RSSLibJ異常簡單,我們先設(shè)置好HttpServletResponse的Header,然后通過RSSLibJ輸出XML即可: import com.rsslibj.elements.Channel; ? public class Writer { ??? public static void main(String[] args) ??????????? throws InstantiationException, ClassNotFoundException, ??????????? IllegalAccessException { ??????? Channel channel=new Channel(); ??????? channel.setDescription("This is my sample channel."); ??????? channel.setLink("http://localhost/"); ??????? channel.setTitle("My Channel"); ??????? channel.setImage("http://localhost/", ??????????????? "The Channel Image", ??????????????? "http://localhost/foo.jpg"); ??????? channel.setTextInput("http://localhost/search", ??????????????? "Search The Channel Image", ??????????????? "The Channel Image", ??????????????? "s"); ??????? channel.addItem("http://localhost/item1", ??????????????? "The First Item covers details on the first item>", ??????????????? "The First Item") ??????????????? .setDcContributor("Joseph B. Ottinger"); ??????? channel.addItem("http://localhost/item2", ??????????????? "The Second Item covers details on the second item", ??????????????? "The Second Item") ??????????????? .setDcCreator("Jason Bell"); ??????? System.out.println("The feed in RDF: "+channel.getFeed("rdf")); ??? } } 9.5.JDOM生成RSS方式 package music; ? ? import org.jdom.*; import org.jdom.output.*; import org.jdom.input.*; import java.io.*; import java.util.*; import java.text.DateFormat; public class RSSCreater { ??? AlbumDto dto=null; ??? public RSSCreater(AlbumDto dto,String dir) ??? { ??????? Date date=new Date(); ??????? this.dto=dto; ??????? String albumName=dto.getAlbumName(); ??????? String artistName=dto.getArtistName(); ??????? DateFormat format=DateFormat.getDateTimeInstance(); ??????? String time=format.format(date); ??????? int albumId=dto.getAlbumId().intValue(); ??????? String id=String.valueOf(albumId); ??????? String url="http://localhost:8080/musicWeb/getSongAction.do?categoryId="+id; ??????? System.out.println("現(xiàn)在時間是:"+time); ??????? String atitle=artistName+"的新專輯-- "+albumName+"--已經(jīng)到達(dá)本站,歡迎查看"; ??????? try ??????? { ??????????? String truePath=dir+"/"+"index.xml"; ??????????? SAXBuilder sb = new SAXBuilder(); ??????????? Document doc = sb.build(new FileInputStream(truePath)); ??????????? Element root = doc.getRootElement(); ??????????? java.util.List books = root.getChildren("channel"); ??????????? Element item=(Element)books.get(0); ? ??????????? Element it=new Element("item"); ??????????? Element title=new Element("title").setText(atitle); ??????????? Element lint=new Element("link").setText(url); ??????????? Element datetime=new Element("pubDate").setText(time); ??????????? Element guid=new Element("guid").setText(url); ? ??? ????????it.addContent(title); ??????????? it.addContent(lint); ??????????? it.addContent(guid); ??????????? it.addContent(datetime); ??????????? item.addContent(it); ? ???????????? File files=new File(truePath); ??????????? Writer xmlwriter=new FileWriter(files); ??????????? FileOutputStream outstream=new FileOutputStream(files); ??????????? XMLOutputter fmt=new XMLOutputter(); ??????????? fmt.output(doc,xmlwriter); ??????????? fmt.output(doc,outstream); ? ? ??????? } ??????? catch(Exception e) ??????? { ???? ???????System.out.println(e); ??????? } ??? } } 9.6.使用FreeMarker/Jsp(WebWork2)生成靜態(tài)/動態(tài)RSS文件(RSS2.0) 在計劃生成RSS文件的時候,順便搜索了一下JIRA和Confluence的程序,發(fā)現(xiàn)它們分別是用模板方式和JSP動態(tài)頁面來展示的.于是我也想到兩種方式: 1.用FreeMarker生成靜態(tài)文件,適用于更新不是很頻繁的內(nèi)容. 2.用JSP動態(tài)展示,適合更新頻率高,種類繁多的內(nèi)容. 使用rsslibj庫! 還是以本站的新聞舉例,其中的新聞信息類參考http://www.jscud.com/srun/news/viewhtml/3_2005_8/76.htm此處不在列出.?, 9.6.1.????先說FreeMarker方式 根據(jù)RSS的規(guī)范,得到模板如下: <?xml version="1.0" encoding="UTF-8" ?> ?<rss version="2.0"> ?<channel> ??<title>JScud Develop</title> ?<link>http://www.jscud.com/</link> ?<language>zh-cn</language> ?<description >JScud Develop By Scud</description> ?<webMaster>xxx@21cn.com(scud)</webMaster> ?<lastBuildDate>${rssutil.formatRssDate(now)}</lastBuildDate> ?? ?? <#list newslist as onenews> ?<item> ?? <title>${onenews.title?xml}</title> ?? <link>http://www.jscud.com/srun/news/viewhtml/${onenews.htmlFilePath}/${onenews.nid}.htm</link> ?? <pubDate>${rssutil.formatRssDate(onenews.addtime)}</pubDate> ?? <description><![CDATA[ ?${rssutil.formatRssCData(onenews.showContent)} ?? ]]> ?? </description> ?? </item> ?</#list> ?</channel> ?</rss> 其中的網(wǎng)址和網(wǎng)站名稱可以根據(jù)自己的實際情況修改. 我每次取出最新的20條文章來生成RSS,不過內(nèi)容比較多,生成的RSS文件比較大,看到有的網(wǎng)站的description只是放了文章摘要的內(nèi)容,這樣文件就小多了.總之是根據(jù)自己的需求設(shè)計吧. 其中用到的RssUtil函數(shù)庫的函數(shù)如下(日期的函數(shù)參考上一篇文章): ??? /** ???? *?把]]>替換為]]&gt; ???? * @param content?內(nèi)容 ???? * @return?格式化后的內(nèi)容 ???? */ ??? public static String formatRssCData(String content) ??? { ??????? String result = StringFunc.replace(content,"//]//]>","]]&gt;"); ??????? ??????? return result; ??? } ??? ??? /** ???? *?格式化為xml需要的字符串 ???? * @param field?內(nèi)容 ???? * @return?格式化后的串 ???? */ ??? public static String formatString2XML(String field) ??? { ??????? return StringFunc.str2TextXML(field); ??? } ??? ??? public static String getNowDateTime() ??? { ??????? return formatRssDate(DateTime.getNowTimestamp()); ??? } ? 利用FreeMarker生成靜態(tài)文件的代碼如下: ?private Configuration freemarker_cfg = null; ? ??? protected Configuration getFreeMarkerCFG() ??? { ??????? if (null == freemarker_cfg) ??????? { ??????????? // Initialize the FreeMarker configuration; ??????????? // - Create a configuration instance ??????????? freemarker_cfg = new Configuration(); ? ??????????? freemarker_cfg.setClassForTemplateLoading(this.getClass(), "/htmlskin"); ? ??????????? freemarker_cfg.setDefaultEncoding("GBK"); ??????? } ? ??????? return freemarker_cfg; ??? } ? ??? public boolean geneFileByFreeMarker(String templateFileName, Map propMap, String filePath, ??????????????????? String fileName, String encode) ??? { ??????? try ??????? { ??????????? Template t = getFreeMarkerCFG().getTemplate(templateFileName); ? ??????????? File afile = new File(filePath + "/" + fileName); ? ??????????? Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(afile), ??????????????????????????? encode)); ? ??????????? propMap.put("baseurl", PropSet.getStringProp("url.root")); ? ??????????? t.process(propMap, out); ??????? } ??????? catch (TemplateException e) ??????? { ??????????? LogMan.error("Error while processing FreeMarker template " + templateFileName, e); ??????????? return false; ??????? } ??????? catch (IOException e) ??????? { ??????????? LogMan.error("Error while generate File " + fileName, e); ??????????? return false; ??????? } ? ??????? return true; ?? ?} ? 新聞系統(tǒng)中調(diào)用重新生成RSS文件的代碼如下: ? ??? /** ???? *?重新生成RSS文件. ???? * ???? * @param nid?更新的新聞的id,如果不包含在最新的新聞里,則不更新RSS.nid <1則更新 ???? * ???? * @return?是否成功 ???? */ ??? private boolean renewRSS(int nid) ??? { ??????? List newsList =?裝載新聞的代碼 ? ??????? boolean shouldUpdate = false; ??????? if (nid > 0) ??????? { ??????????? for (int i = 0; i < newsList.size(); i++) ??????????? { ??????????????? NewsItem aNews = (NewsItem) newsList.get(i); ??????????????? if (aNews.getNid() == nid) ??????????????? { ??????????????????? shouldUpdate = true; ??????????????????? break; ??????????????? } ??????????? } ??????? } ??????? else ??????? { ??????????? shouldUpdate = true; ??????? } ? ??????? //不更新,則返回 ??????? if (!shouldUpdate) ??????? { ??????????? return true; ??????? } ? ??????? Map root = new HashMap(); ??????? ??????? root.put("rssutil",new RSSUtil()); ? ??????? root.put("newslist", newsList); ??????? ??????? root.put("now",DateTime.getNowTimestamp()); ? ??????? geneFileByFreeMarker("/news/rss.ftl", root, PropSet.getStringProp("rss.rssdir"), PropSet ??????????????????????? .getStringProp("rss.rssfile"), "UTF-8"); ? ??????? return true; ??? } 在增加或者更新/刪除新聞的地方需要調(diào)用這個renewRSS函數(shù). ? 9.6.2.????動態(tài)方式JSP 相對靜態(tài)方式而言,簡單的多,不過效率上可能就不太好了. webwork2的Action代碼如下: ??????? newsList =?裝載新聞代碼 ??????? return SUCCESS; 視圖Jsp如下: <%@ page contentType="text/xml; charset=UTF-8"%> <%@ taglib uri="jscud" prefix="jscud" %> <%@ taglib uri="webwork" prefix="ww" %> <ww:bean name="’com.jscud.www.util.RSSUtil’" id="rssUtil" /> <?xml version="1.0" encoding="UTF-8" ?> ?<rss version="2.0"> ?<channel> ?<title>JScud Develop</title> ?<link>http://www.jscud.com/</link> ?<language>zh-cn</language> ?<description >JScud Develop By Scud</description> ?<webMaster>xxx@21cn.com(scud)</webMaster> ?<lastBuildDate><ww:property value="#rssUtil.nowDateTime" /></lastBuildDate> ?? ?? <ww:iterator value="newsList"> ?<item> ?? <title><ww:property value="#rssUtil.formatString2XML(title)"/></title> ?? <link>http://www.jscud.com/srun/news/viewhtml/<ww:property?value="htmlFilePath" />/<ww:property?value="nid" />.htm</link> ?? <pubDate><ww:property?value="#rssUtil.formatRssDate(addtime)" /></pubDate> ?? <description><![CDATA[ ?<ww:property value="#rssUtil.formatRssCData(showContent)"/> ?? ]]> ?? </description> ?? </item> ?</ww:iterator> ?</channel> ?</rss> jsp的方式簡單多了,上面的jsp里面還演示了ww:bean的使用 :) 附錄 附錄1:語言編碼
Afrikaans: af Albanian: sq Basque: eu Belarusian: be Bulgarian: bg Catalan: ca Chinese (Simplified): zh-cn Chinese (Traditional): zh-tw Croatian: hr Czech: cs Danish: da Dutch: nl Dutch (Belgium): nl-be Dutch (Netherlands): nl-nl English: en English (Australia): en-au English (Belize): en-bz English (Canada): en-ca English (Ireland): en-ie English (Jamaica): en-jm English (New Zealand): en-nz English (Phillipines): en-ph English (South Africa): en-za English (Trinidad): en-tt English (United Kingdom): en-gb English (United States): en-us English (Zimbabwe): en-zw Estonian: et Faeroese: fo Finnish: fi French: fr French (Belgium): fr-be French (Canada): fr-ca French (France): fr-fr French (Luxembourg): fr-lu French (Monaco): fr-mc French (Switzerland): fr-ch Galician: gl Gaelic: gd German: de German (Austria): de-at German (Germany): de-de German (Liechtenstein): de-li German (Luxembourg): de-lu German (Switzerland): de-ch Greek: el Hawaiian: haw Hungarian: hu Icelandic: is Indonesian: in Irish: ga Italian: it Italian (Italy): it-it

總結(jié)

以上是生活随笔為你收集整理的RSS从入门到精通的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产网红在线观看 | 中文字幕第一页av | 日韩欧美亚州 | 亚洲综合欧美激情 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 国内久久视频 | 欧美福利在线播放 | 成人国产精品久久久 | 欧美日韩精品在线免费观看 | 美女精品久久 | 91精品久久久久久综合乱菊 | 一区二区三区免费在线播放 | 国产尤物一区二区三区 | 青春草视频在线播放 | 玖草影院| 美腿丝袜一区二区三区 | 人人草在线视频 | 91免费高清在线观看 | 看污网站| 免费成人在线视频网站 | 二区中文字幕 | 天天躁日日躁狠狠躁av麻豆 | 欧美伦理电影一区二区 | 香蕉影视app | 精品久久久久久久久久久院品网 | 国产精品麻豆果冻传媒在线播放 | 97免费在线观看视频 | 激情图片qvod | 国内偷拍精品视频 | 亚洲a在线观看 | 五月天六月色 | 久久激情综合网 | 久久精品视频4 | 午夜视频在线观看网站 | 91色网址 | 色播五月婷婷 | 国产亚洲成人精品 | 激情久久伊人 | 九九九九九精品 | 中文字幕在线成人 | 国产在线观看国语版免费 | 免费99视频 | 欧美日韩在线观看一区二区三区 | 中文字幕888 | 久久高清| www色com| 久久精品资源 | 国产精品久久久久免费观看 | 久久久.com | 国产v在线| 日本公妇在线观看高清 | 国产亚洲一区二区在线观看 | 亚洲免费av片 | 欧美国产精品久久久久久免费 | 中文字幕欧美日韩va免费视频 | 国产精品久久久久久久久免费 | 亚洲成a人片综合在线 | 日韩激情在线视频 | 在线观看久久久久久 | 中文字幕在线观看91 | 狠狠色伊人亚洲综合网站野外 | 久久综合狠狠综合久久综合88 | av在线影片 | 麻豆视频在线免费观看 | 亚洲欧美怡红院 | 婷婷婷国产在线视频 | 三级黄色大片在线观看 | 91成人欧美 | 成人午夜电影在线 | 欧美国产日韩久久 | 丁香六月婷婷激情 | 一区二区三区四区久久 | 日韩色爱 | 少妇bbb搡bbbb搡bbbb| 国产成人精品一区一区一区 | 在线观看亚洲电影 | 日韩在线视频二区 | 在线观看视频一区二区三区 | 成年免费在线视频 | 久久伊人婷婷 | 国产精品日韩久久久久 | 五月天天av | 97人人超 | 欧美性久久久 | 亚洲欧美婷婷六月色综合 | 国产一区二区观看 | 99久久日韩精品视频免费在线观看 | 国产精品9999 | 夜色资源网 | 国产精品成人国产乱一区 | 69久久久 | 国产91精品一区二区麻豆亚洲 | 偷拍区另类综合在线 | 免费看一及片 | 日本黄色大片儿 | 日韩免费观看一区二区三区 | 欧美久久九九 | 成人免费网站在线观看 | 精品女同一区二区三区在线观看 | 久久人人爽人人片 | 99色亚洲 | 中文字幕成人 | 国产伦理久久精品久久久久_ | 国产精品 日韩 | 欧美日韩在线播放一区 | 久久精品99国产精品亚洲最刺激 | 精品国偷自产国产一区 | 日韩精品久久久久久中文字幕8 | 99久久久成人国产精品 | 99久久精品免费看 | 人人澡人人澡人人 | 欧美日本高清视频 | 99久热在线精品视频 | 午夜av免费在线观看 | 美女啪啪图片 | av中文字幕在线观看网站 | 九九热只有这里有精品 | 日韩专区在线观看 | 麻豆免费视频观看 | 国产淫a| 亚洲精品久久久久58 | 丁香六月伊人 | 五月婷婷影院 | 91在线一区 | 麻豆视频国产在线观看 | 亚洲色图27p | www日日 | 天天看天天干 | 97视频资源| 精品一区二区亚洲 | 97人人爽人人| 成年人在线免费看视频 | 国产高清在线视频 | 天天射日| 91在线网址 | 国产精品扒开做爽爽的视频 | www.亚洲在线| 国内成人av | 国产美女在线精品免费观看 | 中文字幕在线视频网站 | 成人观看视频 | 欧美日韩国产二区三区 | 日韩午夜高清 | 最近免费在线观看 | 色综合久久综合 | 粉嫩av一区二区三区免费 | 99国产精品久久久久久久久久 | 日韩视频免费观看高清完整版在线 | 在线导航福利 | 狠狠插狠狠干 | 日韩av手机在线观看 | 亚洲精品毛片一级91精品 | 久久国产精品免费一区 | 国产免费又黄又爽 | 国产亚州精品视频 | 91最新视频在线观看 | 91麻豆产精品久久久久久 | 日韩成人看片 | 精品国产一区二区三区久久影院 | 国产黄视频在线观看 | 亚洲综合激情小说 | 国产粉嫩在线观看 | 天天射天天爱天天干 | 在线观看av国产 | 伊人国产视频 | 日韩中文字幕免费在线播放 | 久久久久电影网站 | 又黄又爽又色无遮挡免费 | 91自拍成人 | 天堂资源在线观看视频 | 成人黄色在线 | 国产精品99久久久久人中文网介绍 | 久久婷亚洲五月一区天天躁 | 国产999精品久久久久久麻豆 | 久久老司机精品视频 | 精品视频一区在线 | 欧美极品在线播放 | 天天草天天摸 | 国产美女精品视频 | 深爱五月激情五月 | 黄色一级免费电影 | 久久视频在线视频 | 欧美日韩国产精品久久 | 色天天中文 | av在线免费不卡 | 96av在线视频 | 亚洲综合色激情五月 | 不卡视频国产 | 99精彩视频 | 91免费高清视频 | 国产激情电影综合在线看 | 美女网站色在线观看 | 国产精品wwwwww | 国产破处在线播放 | 久久久久一区二区三区四区 | 天天夜夜狠狠操 | 中文区中文字幕免费看 | 尤物一区二区三区 | 国产精品久久久久久吹潮天美传媒 | 精品在线播放视频 | av中文国产 | 91av蜜桃 | 精品国产乱码久久久久 | 久久夜色精品国产欧美乱极品 | 麻豆视频在线免费看 | 国产资源 | 玖玖爱免费视频 | 一级片视频在线 | 91丨porny丨九色 | 91九色视频 | 亚洲精品乱码久久久久久蜜桃91 | www.99热精品| 久久天堂精品视频 | 99精品欧美一区二区三区黑人哦 | 婷婷激情综合 | 亚洲精品国产精品乱码不99热 | 在线观看免费成人av | 日韩免费精品 | 天天色天天草天天射 | 波多野结依在线观看 | 中文字幕在线播放第一页 | 亚洲最大在线视频 | 日本公妇在线观看高清 | 99久热在线精品视频观看 | 亚洲黄色免费网站 | 天天射天天射 | 亚洲精品久久久久久国 | 日韩在线电影观看 | 97成人免费视频 | 午夜视频在线观看一区二区三区 | 国产伦精品一区二区三区高清 | 男女视频国产 | 超碰在线97免费 | www免费看片com | 九九久久影院 | 天天看天天干天天操 | 日本三级大片 | 欧美精品在线观看 | 精品毛片在线 | 美女网站色免费 | 狠狠88综合久久久久综合网 | 久草视频在线免费 | 日韩激情中文字幕 | 草久在线视频 | 中文字幕日韩有码 | 黄色高清视频在线观看 | 欧美日韩在线观看视频 | 亚洲精品h | 黄色一级大片免费看 | 天海翼一区二区三区免费 | 在线国产片 | 色视频一区| 久久久国产在线视频 | 国产a国产a国产a | 国产精品一区二区久久久 | 亚洲国产精品影院 | 久久久av免费 | 日韩免费在线视频 | 成人黄在线观看 | 成人a级大片| 开心丁香婷婷深爱五月 | 天天干天天色2020 | 国产精品美女久久久久久久 | 中文字幕高清 | 日韩三级免费 | 国产日韩视频在线播放 | 国产黄在线 | 久久99久久99免费视频 | 91九色九色 | 成人久久久久久久久久 | 在线观看亚洲国产精品 | 在线观看av免费 | 欧美精品久久人人躁人人爽 | 久久99久久99免费视频 | 欧美a级在线播放 | 久久久久久国产精品美女 | 玖玖在线视频观看 | 久久精品79国产精品 | 日韩精品一区二区三区电影 | avwww在线观看 | 国产色爽 | 久草电影免费在线观看 | 亚洲高清视频在线播放 | 日韩字幕在线观看 | 超级碰碰碰碰 | 亚洲在线免费视频 | 99久久精品国产网站 | 成人综合婷婷国产精品久久免费 | 色偷偷88欧美精品久久久 | av 一区 二区 久久 | 久久五月婷婷综合 | 日日摸日日爽 | 国产99久久久国产精品 | 成人av亚洲| 免费a级毛片在线看 | 久久午夜电影网 | av黄在线播放 | 五月婷婷六月丁香 | 国产日产av| 六月丁香六月婷婷 | 黄色av影视| 婷婷六月丁| 91免费观看视频网站 | 国内精品久久久久久 | 色噜噜日韩精品一区二区三区视频 | 免费高清在线视频一区· | 日韩色高清 | 国产久草在线观看 | 麻豆成人小视频 | 国产美女免费观看 | 久久精品一区二区三区中文字幕 | 日日夜夜精品免费 | 处女av在线 | www色综合 | 久久经典国产视频 | 日韩激情网 | 国产中出在线观看 | 17videosex性欧美 | 男女全黄一级一级高潮免费看 | 色综合天天视频在线观看 | 午夜精品久久久久久久久久久 | 日韩一区正在播放 | 久久久亚洲网站 | 中文区中文字幕免费看 | 在线免费高清视频 | 国产精品毛片一区二区 | www久草 | 成人综合婷婷国产精品久久免费 | 在线观看中文字幕亚洲 | 国产精品久久久视频 | 97电影网站 | 久久国产福利 | 激情婷婷丁香 | 成人久久精品视频 | 91天天操 | 日韩视频一区二区在线 | 97天堂| 久久久性| 日本爱爱免费视频 | 狠狠色狠狠色综合日日92 | 国产亚洲精品综合一区91 | 天天躁日日躁狠狠躁av中文 | 久久久久久久国产精品视频 | 99热.com| 在线免费中文字幕 | 91在线永久| 精品亚洲欧美无人区乱码 | 在线看国产一区 | 免费人做人爱www的视 | 久久99精品国产麻豆宅宅 | 香蕉视频网站在线观看 | 久久狠狠干 | 国产青春久久久国产毛片 | 激情深爱 | 欧美人人爱| 456免费视频| 日日干夜夜骑 | 在线91色| 在线观看中文字幕一区二区 | 欧美精品日韩 | 欧美一级激情 | 日韩国产高清在线 | 天堂在线一区 | 在线观看完整版免费 | 久久美女视频 | 国产精品第2页 | 成人久久亚洲 | av直接看| 激情五月婷婷激情 | 天天操天天操天天干 | 午夜视频在线瓜伦 | 美女视频久久黄 | 91激情| 亚洲一区二区三区四区在线视频 | 日韩综合第一页 | 麻豆国产视频 | 激情婷婷| 人人操日日干 | 国内精品久久久久久久久 | 波多野结衣一区二区 | 国产精品自拍av | 在线播放国产一区二区三区 | 一区二区三区日韩视频在线观看 | 成人中心免费视频 | 91av久久| 国产在线观看高清视频 | 精品免费99久久 | 欧美在线一级片 | 日韩av视屏 | 日韩在线第一区 | 欧美一区二区在线 | 色香天天 | 91亚洲精品国偷拍 | 亚洲国产网站 | www.久久久.com | 99国产一区| 精品中文字幕在线观看 | 国产成人一区二区三区免费看 | 狠狠狠色丁香婷婷综合激情 | av片一区二区 | 97精品国产97久久久久久久久久久久 | 天天摸夜夜操 | 国产黄色免费看 | 成人免费av电影 | 91亚洲视频在线观看 | 天天躁天天躁天天躁婷 | 中文成人字幕 | 九九久久精品视频 | 久久艹在线 | 香蕉网址 | 天天色天天色天天色 | 国产成人精品亚洲精品 | 国产成人性色生活片 | 亚洲精品免费在线观看 | 午夜精品一区二区三区免费视频 | 欧美日韩电影在线播放 | av高清一区二区三区 | 91精品久久久久久综合五月天 | 丁香激情婷婷 | 免费看三片 | 欧美 日韩 性 | 992tv又爽又黄的免费视频 | 成人免费网站在线观看 | 中文字幕黄色 | 国产精品igao视频网网址 | 中文字幕第一页在线播放 | 国产精品久久久av久久久 | 超碰人人草人人 | 国产精品一区在线播放 | 日本乱码在线 | 久久久亚洲精品 | 91中文在线视频 | 丁香六月婷| 国产精品久久久久免费观看 | 91视频啊啊啊 | 综合色伊人| 男女全黄一级一级高潮免费看 | 四虎视频| 激情伊人五月天久久综合 | 婷婷丁香在线视频 | 天堂av在线中文在线 | 亚洲国产经典视频 | 国产免费观看久久黄 | 久久久久久麻豆 | 欧美韩国日本在线 | 亚洲精品美女久久久久 | 久久久久久久久久久电影 | 天天射天天干 | 中文字幕免费不卡视频 | 国产精品成人一区二区三区吃奶 | 久久深夜| 久久国内精品99久久6app | 国产99久久久国产精品成人免费 | 久久久毛片 | 日韩理论在线 | 精品一区二区精品 | 国产精品资源在线观看 | 手机成人在线 | 狠狠干五月天 | 麻豆国产精品永久免费视频 | 99精品视频网| 高清久久久久久 | 免费中文字幕 | 久久国产精品一区二区三区 | 黄网站色欧美视频 | 中文字幕一区二区三区视频 | 欧美日韩一级视频 | 一区二区电影在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 中文字幕电影在线 | 丰满少妇在线观看资源站 | 久操操 | 久久视频免费在线 | 超碰在线免费97 | 黄色免费在线看 | 色噜噜在线观看视频 | 国产99久久精品一区二区永久免费 | 亚洲最大色 | 日韩欧美在线一区二区 | 又黄又爽的视频在线观看网站 | 麻豆久久久久久久 | 在线视频中文字幕一区 | 欧美a级片免费看 | 91亚洲精品久久久蜜桃借种 | 午夜10000 | 一区二区三区免费在线观看 | 亚洲国产精品一区二区久久,亚洲午夜 | 欧美日韩3p | 激情五月综合网 | 国产高清绿奴videos | 久久久精品二区 | av看片网址| 欧美最猛性xxx | 一区二区三区在线观看免费视频 | 免费在线观看黄网站 | 人人藻人人澡人人爽 | 久久久综合香蕉尹人综合网 | 国产一卡在线 | 一区二区三区中文字幕在线 | 久久电影中文字幕视频 | 丁香婷婷色月天 | 欧美va天堂va视频va在线 | 在线观看亚洲 | 99国产免费网址 | 欧美视频日韩视频 | 国产在线国产 | 亚a在线| 久人人 | 在线看国产 | 免费福利视频网 | 国产精品美女久久 | 一级全黄毛片 | 少妇高潮冒白浆 | av成人动漫在线观看 | 中文有码在线 | 在线欧美日韩 | 国产精品视频app | 一级做a爱片性色毛片www | 国产精品高清在线 | 免费看的黄色录像 | 97视频在线免费观看 | 日韩精品专区 | 69视频在线 | 国产精品不卡一区 | 成人9ⅰ免费影视网站 | 日韩精品一区二区三区视频播放 | 丁香花五月 | 97精产国品一二三产区在线 | 亚洲精品色 | 国产小视频在线播放 | 一区二区伦理电影 | 久久精品一 | 国产精品丝袜 | 天天操天天操一操 | 中文字幕亚洲在线观看 | 成人欧美一区二区三区黑人麻豆 | 狠狠躁天天躁综合网 | 一级免费黄色 | 久久免费福利 | 中文字字幕在线 | 国产视频一区二区三区在线 | 成人网看片| 日日夜夜91 | 97夜夜澡人人爽人人免费 | 日韩r级在线 | 日韩一级电影在线观看 | 午夜视频在线观看网站 | 91精品视频在线 | 久久99精品视频 | 亚洲精品成人在线 | 欧美日韩中字 | 四虎在线永久免费观看 | 久久久久久久毛片 | 久久精品久久精品久久 | 久久国产精品99久久久久 | 曰本免费av| 免费观看日韩 | 中文字幕第一 | 99在线精品免费视频九九视 | 香蕉视频在线免费 | 精品久久九九 | 久久国产精品视频 | 国产精品亚洲人在线观看 | 国产成人久久精品77777 | 国产偷v国产偷∨精品视频 在线草 | 色99网| 日韩动漫免费观看高清完整版在线观看 | 日韩特级毛片 | 午夜在线免费视频 | 91综合久久一区二区 | 亚洲激精日韩激精欧美精品 | www.狠狠插.com | 香蕉一区 | 国产亚洲精品久久久久久久久久久久 | 香蕉影院在线 | 四虎www.| 亚洲欧洲成人精品av97 | 亚洲国产成人精品在线 | 人人澡超碰碰 | 国产精品久久99综合免费观看尤物 | 在线播放 亚洲 | 亚洲激情在线观看 | 三级黄免费看 | 最近中文国产在线视频 | 五月天av在线| 亚洲精品一区二区三区高潮 | www日日 | 麻豆国产网站 | 日日操日日插 | 成人av在线资源 | 国产一区二区久久 | 欧美日韩高清不卡 | 日本不卡一区二区 | 日日天天| 99这里只有久久精品视频 | 91自拍成人| 亚洲经典视频 | 日韩一级黄色大片 | 精品国产一二三四区 | 人人cao| 激情五月五月婷婷 | 亚洲国产av精品毛片鲁大师 | 久久经典视频 | 天天干,天天操,天天射 | 国产福利午夜 | 欧美天天综合 | 天天亚洲综合 | 欧美在线一二区 | 天天射天天艹 | 人人澡超碰碰97碰碰碰软件 | 久久黄色免费视频 | 日韩三区在线 | 操操操干干干 | 日韩欧美综合精品 | 国产精品午夜久久久久久99热 | 中文字幕免费高清在线观看 | 开心综合网| 欧美成人精品欧美一级乱 | 亚洲每日更新 | 天天干天天干天天干 | 97超碰在线久草超碰在线观看 | 久久综合色一综合色88 | a黄色片在线观看 | 亚洲人久久| 天天综合在线观看 | 久久久99国产精品免费 | 人人澡人 | 手机在线观看国产精品 | 91精品在线免费视频 | 国产一级免费片 | 香蕉一区 | 好看的国产精品视频 | 99精品视频在线免费观看 | 高清美女视频 | 国产成人精品午夜在线播放 | 国产精品久久久久久久久久久免费 | 新av在线| 国产精品久久久区三区天天噜 | 九九天堂 | 欧美天堂视频在线 | 精品国内自产拍在线观看视频 | 国产精品美女久久久久久久久 | 国产成人三级 | 一本大道久久精品懂色aⅴ 五月婷社区 | 欧美精品在线观看免费 | 精品国产一区二区三区男人吃奶 | 亚洲黄色av一区 | 亚洲影院天堂 | 一区二区三区高清在线 | 麻豆国产电影 | 永久免费av在线播放 | av免费电影网站 | 手机在线看永久av片免费 | 黄色中文字幕在线 | 成人精品国产免费网站 | 中文字幕免费一区 | 十八岁以下禁止观看的1000个网站 | 久久国产一区二区三区 | 免费99视频 | 亚洲精品视频免费观看 | 色夜影院| 99视频在线观看视频 | 在线播放精品一区二区三区 | 五月婷婷在线观看 | 成人激情开心网 | 人人干人人艹 | 超碰人人草 | www久久精品 | 欧美精品中文字幕亚洲专区 | 91九色视频在线播放 | 美女网站黄免费 | 狠狠躁日日躁狂躁夜夜躁 | 日本久久电影网 | 久久er99热精品一区二区三区 | 久久天堂影院 | 亚洲精品乱码久久久久久蜜桃91 | 国产美女搞久久 | 国产一区二区免费看 | 丁香激情网 | 国产精品一区二区视频 | 日韩午夜在线 | 亚洲区另类春色综合小说 | 手机成人在线电影 | 免费在线观看av网站 | 日本不卡123区 | 亚洲va天堂va欧美ⅴa在线 | 日韩精品久久久免费观看夜色 | 国产精品免费久久久久久 | 国产午夜精品一区二区三区 | 欧美国产日韩一区二区 | 成人国产精品久久久久久亚洲 | 2019中文最近的2019中文在线 | 在线免费观看国产黄色 | 久久综合久久综合这里只有精品 | 婷婷网址 | 日韩在线观看一区二区三区 | 国产精品一区二区在线看 | 91av免费观看 | 天天干,狠狠干 | 成年人看片网站 | 久久人人爽爽人人爽人人片av | 四虎在线免费观看 | 夜夜操天天干, | 99精品亚洲 | 操夜夜操 | 香蕉在线影院 | 黄色精品在线看 | 亚洲人人射 | 日韩a欧美 | 欧美一级特黄高清视频 | 啪啪激情网 | 久久精品婷婷 | 91色偷偷 | 成人av一区二区三区 | 日韩在线观看一区二区 | 五月综合色婷婷 | 欧美日一级片 | 久久精品久久精品久久精品 | 欧美激情视频一区二区三区 | 婷婷精品国产一区二区三区日韩 | 91精品久久久久久久久久久久久 | 黄色动态图xx | 91精品在线观看入口 | 在线免费观看黄色小说 | 69中文字幕| 日日婷婷夜日日天干 | 91在线免费播放 | 在线观看www视频 | 中文字幕日本在线 | 免费国产在线精品 | 久久久国产精品电影 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 午夜精品福利在线 | 久久久久国产精品一区 | 91免费版成人| 在线a视频免费观看 | 91福利国产在线观看 | 国产欧美精品在线观看 | 国产伦理一区二区 | 奇米影音四色 | 一级欧美一级日韩 | 三级黄色大片在线观看 | 国产成人一区二区三区电影 | 国产精品久久久久影视 | 视频在线99 | h视频在线看 | 97在线影视 | 手机在线看永久av片免费 | 91丨九色丨高潮丰满 | 91成人区 | 国产精品免费观看网站 | 中文字幕一二三区 | av色网站| 国产经典 欧美精品 | 深爱激情综合网 | 亚洲精品视频在线观看视频 | 国产亚洲成人网 | 麻豆国产网站入口 | www久久九| 国产成人黄色网址 | 精品国产一区二区三区四区vr | 黄色视屏在线免费观看 | 国产123av | 日韩高清免费电影 | 99久久综合国产精品二区 | 中文字幕在线播放一区 | 69精品人人人人 | 日韩精品免费一区二区三区 | 在线影院 国内精品 | 韩国av一区| 欧美日韩免费一区二区 | 少妇高潮冒白浆 | 久久久夜色 | 免费久久99精品国产 | 国产黄网在线 | 日韩在线免费小视频 | 区一区二区三在线观看 | 亚洲男女精品 | 伊人永久在线 | 中文字幕电影在线 | 一区二区三区久久精品 | 99精品久久精品一区二区 | 欧美另类高潮 | 一区二区三区高清不卡 | 亚洲一级黄色 | 中文字幕中文字幕在线中文字幕三区 | 久久人人添人人爽添人人88v | 福利区在线观看 | 久久久久久久久久久久电影 | 91福利试看| 男女精品久久 | 成人av一区二区在线观看 | 激情婷婷六月 | 亚洲精品久久久久久中文传媒 | 国产在线a | 欧美成人精品在线 | 亚洲电影图片小说 | 久久精品毛片 | 国产丝袜制服在线 | 一区二区视频在线免费观看 | 手机在线小视频 | 日本护士三级少妇三级999 | 国产成人三级在线播放 | 992tv在线观看 | 韩日精品视频 | 在线观看免费成人av | 久久人人看 | 99精品国产免费久久久久久下载 | 成人v| 久久精品网 | 国产精品久久99综合免费观看尤物 | 色婷婷久久久综合中文字幕 | 国产亚洲欧洲 | 超碰午夜| 99精品视频免费看 | 久久国产精品精品国产色婷婷 | 日韩免费在线观看 | 国产在线观看一区 | 国产91全国探花系列在线播放 | 日韩一二区在线观看 | 婷香五月| 精品一区二区免费在线观看 | 国产精品专区在线观看 | 51精品国自产在线 | 久久久精品福利视频 | 免费视频一二三区 | 日韩二区三区在线观看 | 亚洲精品在线一区二区 | 日韩视频一区二区三区在线播放免费观看 | 亚洲欧洲中文日韩久久av乱码 | 日日日干 | 狠狠狠狠狠狠干 | 国产精品丝袜在线 | 不卡的av在线播放 | 久久免费福利视频 | 日韩欧美在线观看 | 亚洲国产精品电影在线观看 | 在线亚洲成人 | 91在线观| 操操操综合 | 五月婷丁香 | 精品国产乱码久久久久久天美 | 狠狠狠色丁香婷婷综合久久五月 | 99色精品视频 | 国产成人精品一区一区一区 | 香蕉在线视频播放网站 | 国产在线超碰 | 亚洲天堂精品视频 | 国产精品一区在线播放 | 久久久久久久国产精品影院 | 丁香资源影视免费观看 | 午夜精品久久久久久久爽 | 成人资源在线观看 | 黄色免费观看 | 97国产人人 | 亚洲码国产日韩欧美高潮在线播放 | 天天色宗合 | 人人爽人人爽人人爽学生一级 | 国产精品久久一区二区三区, | 久久久国产精品成人免费 | 久久精品视频在线看 | 国产裸体永久免费视频网站 | 亚洲精品在线网站 | 一区二区三区动漫 | 亚洲三级黄 | 九九久久久久久久久激情 | 2019中文在线观看 | 在线观看一区二区视频 | 久久网站免费 | 一区二区三区四区五区在线 | 国产1区2区3区在线 亚洲自拍偷拍色图 | 99久热 | 九九热在线免费观看 | 8090yy亚洲精品久久 | 婷婷在线精品视频 | 成年人黄色免费视频 | 午夜在线免费观看视频 | 综合天天| 五月天婷婷丁香花 | 欧洲精品在线视频 | 亚洲精品国产欧美在线观看 | 欧美成年网站 | zzijzzij亚洲成熟少妇 | 国产精品一区二区三区视频免费 | 97国产大学生情侣酒店的特点 | 国内偷拍精品视频 | 日韩av中文字幕在线 | 在线观影网站 | 91九色在线 | 久久精品一二三区 | 久久女同性恋中文字幕 | 2019免费中文字幕 | av中文字幕亚洲 | 性色av香蕉一区二区 | 91在线在线观看 | 亚洲黄色网络 | 麻豆视频免费在线播放 | 一区二区成人国产精品 | 国产免费亚洲 | 天天看天天操 | 成 人 黄 色 片 在线播放 | 99 色| 色婷婷激情| 欧美午夜一区二区福利视频 | 99热官网| 成人av免费在线观看 | 婷五月天激情 | 成人久久综合 | 插插插色综合 | 久久久综合香蕉尹人综合网 | 色国产在线 | 人人舔人人 | 国产精品免费久久久久影院仙踪林 | 韩国av在线播放 | 色姑娘综合 | 狠狠躁18三区二区一区ai明星 | 蜜臀精品久久久久久蜜臀 | 中文字幕在线观看不卡 | 中文字幕在线观看免费 | 草久草久| 最近中文字幕国语免费av | 免费在线一区二区三区 | 亚洲美女免费视频 | 又粗又长又大又爽又黄少妇毛片 | 成人免费在线观看电影 | 91麻豆传媒 | aaa免费毛片 | 成人日韩av | 国产成人中文字幕 | 99 国产精品 | 一区二区三区av在线 | 高清免费av在线 | 欧美一级裸体视频 | 青青河边草手机免费 | 亚洲一区二区观看 | 午夜视频在线观看网站 | 超碰公开在线 | 国产精品美女久久久免费 | www.看片网站 | 免费亚洲成人 | 久久久久久久久久网站 | 欧美激情精品久久久久久免费 | 天天干天天干天天干天天干天天干天天干 | av网址aaa| 91精品一区国产高清在线gif | 成人欧美在线 | 欧美综合色在线图区 | 国产精品高清免费在线观看 | 日日干天天 | 久99精品| 9999精品视频 | 精品久久久久久综合日本 | 国产无套一区二区三区久久 | 亚洲国产精品一区二区久久,亚洲午夜 | 开心色婷婷 | 国产综合在线观看视频 | 日韩电影在线观看一区 | 99看视频在线观看 | 青青色影院 | 91精品婷婷国产综合久久蝌蚪 | 国产大尺度视频 | 日本天天操 | 在线视频福利 | 亚洲一级黄色 | 日韩毛片久久久 | 狠狠色综合网站久久久久久久 | 中文字幕在线免费97 | 久久试看 | 黄色av网站在线免费观看 | 久久久鲁 | 亚洲人成网站精品片在线观看 | 日韩中文字幕网站 | 精品久久久久久国产偷窥 | 亚洲美女视频网 | 九九免费在线看完整版 | 天天操天天干天天干 | 亚洲日本国产精品 | 天天操天天玩 | 国产精品在线看 | 午夜国产一区二区三区四区 | 国产色视频一区 | 国内99视频 | 日本中文一区二区 | 91精品久久久久久久91蜜桃 | 在线电影 你懂得 | 国产正在播放 | 国产精品2019 | 中文字幕av在线 | 国产一区二区三区四区大秀 | 99久久影视 | 欧美国产日韩一区二区 | 天天色婷婷 | 五月婷婷激情综合网 | 亚洲欧美成人网 | 456免费视频 | 久久美女精品 | 天天操天天干天天摸 | 一区二区三区在线观看免费视频 |