欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
使用 RSS 和 Atom 實(shí)現新聞聯(lián)合

2006 年 10 月 23 日

RSS 和 Atom 技術(shù)的出現為新聞聯(lián)合(news syndication)帶來(lái)了一個(gè)嶄新的時(shí)代。不管怎樣,Web 站點(diǎn)管理員每天手動(dòng)發(fā)布新聞并管理電子郵件用戶(hù)都需要花費時(shí)間。本文說(shuō)明了如何使用 RSS 和 Atom 聯(lián)合格式實(shí)現通用的新聞發(fā)布體系結構,使發(fā)布過(guò)程變得輕松,并將人為錯誤減至最少。

如果您對內容發(fā)布、RSS 2.0 格式規范以及 Atom 1.0 格式規范有了基本了解,那么您就可以準備使用其中之一或者使用兩種技術(shù)來(lái)實(shí)現新聞聯(lián)合系統,而本文對您來(lái)說(shuō)是一個(gè)便利快捷的參考資料。

RSS 和 Atom 聯(lián)合

RSS 和 Atom 是相似的基于 XML 的文檔格式,描述被稱(chēng)為摘要(feed)的相關(guān)信息列表。這些摘要由許多項組成,每項都帶有一套可擴展的附加元數據;例如,每項都有一個(gè)標題。這些摘要的主要用途是用于 Web 內容聯(lián)合,比如用于 Web 站點(diǎn)和直接用于用戶(hù)代理的 Weblog 或者新聞標題。

RSS 2.0 和 Atom 1.0 的兩個(gè)例子


清單 1. RSS 2.0 摘要示例

            <?xml version="1.0"?>            <rss version="2.0">            <channel>            <title>Feed Title</title>            <link>http://yourwebsite.com/</link>            <description>Feed Description</description>            <language>en-us</language>            <pubDate>Mon, 03 Jan 2005 12:00:00 GMT</pubDate>            <item>            <title>Article Title</title>            <link>http://yourwebsite.com/articlelink.html</link>            <description>Your content included here.</description>            </item>            <item>            <title>Sports</title>            <link>http://yourwebsite.com/sportslink.html</link>            <description>Your content included here.</description>            </item>            </channel>            </rss>            


清單 2. Atom 1.0 feed 示例
            <?xml version="1.0" encoding="utf-8"?>            <feed xmlns="http://www.w3.org/2005/Atom">            <title> Feed Title </title>            <link href=" http://yourwebsite.com/"/>            <updated>2003-12-13T18:30:02Z</updated>            <author>            <name>Your Name</name>            </author>            <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id>            <entry>            <title>Article Title</title>            <link href=" http://yourwebsite.com/articlelink.html "/>            <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344efa6a</id>            <updated>2003-12-13T18:30:02Z</updated>            <summary>Some text.</summary>            </entry>            <entry>            <title>Sports</title>            <link href=" http://yourwebsite.com/sportslink.html "/>            <id>urn:uuid:1225c695-cfb8-4ebb-aaaa-80da344e45ab90</id>            <updated>2003-12-14T13:30:55Z</updated>            <summary>Some text.</summary>            </entry>            </feed>            

RSS 和 Atom 摘要的相似點(diǎn)

從前面的兩個(gè)例子(清單 1清單 2)可以看出,RSS 和 Atom 具有相似的基于 XML 的格式。它們的基本結構是相同的,只在節點(diǎn)的表達式上有一點(diǎn)區別。

每個(gè)摘要文件實(shí)際上代表一個(gè)通道。它包含通道標題、鏈接、描述、作者等等。通道信息提供關(guān)于摘要的基本信息。通道信息之后是一些項。每項代表一篇可以從摘要閱讀器閱讀的真實(shí)的新聞或者文章。通常情況下,每項包含有標題、鏈接、更新時(shí)間和摘要信息。

RSS 和 Atom 摘要的不同點(diǎn)

參考 RSS 2.0 and Atom 1.0, Compared,回顧 RSS 和 Atom 的不同點(diǎn)。


表 1. 比較 RSS 2.0 和 Atom 1.0

不同點(diǎn) RSS 2.0 Atom 1.0
部署 RSS 2.0 得到廣泛部署。 Atom 1.0 還未得到廣泛部署。
規范 哈佛大學(xué)擁有版權并凍結了 RSS 2.0 規范。 Atompub 工作組(屬于 IETF)就 Atom 1.0 規范達成一致意見(jiàn),并在將來(lái)有可能重新修訂。
所需內容 RSS 2.0 包含所需的摘要級別的標題、鏈接和描述。它不需要在摘要中出現的任何單獨項的字段。 Atom 1.0 包含摘要和條目所需的標題(可以為空)、惟一標識和最后更新的時(shí)間戳。
有效負載(payload) RSS 2.0 可以包含普通文本或者轉義 HTML,但是不能分辨所提供的是兩個(gè)中的哪一個(gè)。 Atom 1.0 包含有效負載容器。
全部或者部分內容 RSS 2.0 有一個(gè) <description> 元素,可以包含條目的全部文本或者大綱。它沒(méi)有用于標識內容是否完全的內置方法。 Atom 1.0 提供單獨的 <summary><content> 元素。如果它是非文本的或者非本地的內容,出于可訪(fǎng)問(wèn)性的原因摘要將很好用。
自動(dòng)發(fā)現 RSS 2.0 用不同的方法實(shí)現自動(dòng)發(fā)現。 Atom 1.0 標準化自動(dòng)發(fā)現。
提取和聚合 RSS 2.0 只有一個(gè)可識別的形式:一個(gè) <rss> 文檔。 Atom 1.0 允許獨立的 Atom Entry 文檔,可以使用任何網(wǎng)絡(luò )協(xié)議傳輸;例如,XMPP。Atom 也支持聚合摘要,其中,條目指向它們來(lái)自的摘要,前提是如果它們將被包含到其他摘要中。

RSS 和 Atom 發(fā)布系統的通用體系結構

隨著(zhù) RSS 和 Atom 格式規范的發(fā)展和完善,可以實(shí)現越來(lái)越多的 Web 應用程序。使用 RSS 或 Atom 的最通用和典型的實(shí)現是新聞發(fā)布系統。

以下是一個(gè)使用 RSS 和 ATOM 摘要實(shí)現發(fā)布系統的通用體系結構。這個(gè)體系結構由三部分組成:

  • 摘要生成器子系統
  • 摘要運行子系統
  • 自動(dòng)發(fā)布子系統

現在分別看一下這三個(gè)子系統的詳細內容。

摘要生成器

摘要生成器負責生成基于 XML 的摘要文件。摘要生成器的類(lèi)圖如下所示:


圖 1. 摘要生成器的類(lèi)圖


摘要生成器的核心是 FeedFileManager 類(lèi)。它生成與一個(gè)特定摘要相關(guān)的 XML 文件。摘要有兩種具體的類(lèi)型:AtomFeedRssFeed。這兩種 feed 類(lèi)都包含一個(gè) feed channel 類(lèi)和一個(gè) feed item 類(lèi)。feed channel 類(lèi)和 feed item 類(lèi)的實(shí)現將根據它們不同的構造而不同。

摘要運行子系統

摘要運行子系統提供了幾個(gè)摘要運行函數,用于運行這兩種類(lèi)型的摘要文件。例如,insertItem()、deleteItem()、updateItem() 函數。摘要運行子系統的類(lèi)圖如下所示:


圖 2. 摘要運行子系統的類(lèi)圖


首先,需要一個(gè)抽象工廠(chǎng)模式 PublisherFactory 生成兩個(gè)摘要發(fā)布者之一。然后這個(gè)發(fā)布者通過(guò) DataCollection 類(lèi)從數據庫中提取數據。

自動(dòng)發(fā)布子系統

自動(dòng)發(fā)布子系統是在固定時(shí)間更新摘要文件的計時(shí)器。它利用前面兩個(gè)子系統并使發(fā)布系統運行。


圖 3. 自動(dòng)發(fā)布子系統的類(lèi)圖






回頁(yè)首


自動(dòng)生成 RSS 和 ATOM 摘要的逐步實(shí)現

現在,來(lái)看看每一步的詳細實(shí)現過(guò)程。首先,圖 4 提供了通用實(shí)現過(guò)程的圖表。它顯示了幾個(gè)主要的構建塊以及它們之間的關(guān)系。


圖 4. 實(shí)現過(guò)程概覽


整個(gè)應用程序是一個(gè)大計時(shí)器,所以可以在它內部設置固定的啟動(dòng)時(shí)間。當時(shí)間一到,計時(shí)器開(kāi)始做預定的工作 —— 生成摘要文件。首先,應用程序生成一個(gè) XML 文件,然后形成 RSS 和 Atom 摘要,最后向創(chuàng )建的 XML 文件中寫(xiě)入這些摘要。摘要的來(lái)源可以是數據庫、文件或者各種其他的資源。

計時(shí)器

計時(shí)器是發(fā)布系統的核心。它觸發(fā)系統根據用戶(hù)的指定時(shí)間或者在每天的固定時(shí)間生成摘要文件。對于 Java 應用程序,通??梢允褂?Java 標準調度類(lèi):TimerTimerTask 來(lái)實(shí)現一個(gè)重復執行的調度任務(wù)。

更一般的是在這個(gè)發(fā)布系統中組合調度循環(huán)任務(wù)。如何組合調度循環(huán)任務(wù)的詳細信息可以參考 在 Java 應用程序中計劃重復執行的任務(wù)。


清單 3. Timer start 方法示例

            public void start() {            SchedulerTask st = new SchedulerTask(){            public void run() {            try {            updateNewsFeeds(); //concrete method of update feed files.            updateBooksFeeds();            ...            } catch (Exception e) {            e.printStackTrace();            }            }            };            

生成基于 XML 的摘要文件

RSS 和 ATOM 摘要都是基于 XML 的,所以在實(shí)現過(guò)程中生成這些基于 XML 的文件是很重要的。在摘要生成器子系統中的 FeedFileManager 類(lèi)負責這項任務(wù)。


圖 5. FeedFileManager 類(lèi)


通常,這個(gè)類(lèi)應該包括 createFeedFile() 方法。這個(gè)方法需要做三件事:

  • 創(chuàng )建一個(gè) XML 文件。要達到這個(gè)目標,可以創(chuàng )建一個(gè)靜態(tài)方法 createXMLFile()。
  • 與 “摘要運行子系統” 進(jìn)行交互來(lái)創(chuàng )建相關(guān)通道和項信息。
  • 把所有信息寫(xiě)回 XML 文件。


清單 4. createFeedFile 方法示例

            public String createFeedFile(String channelid, String name, String type)            throws Exception {            ...            createXMLFile(file, type);            IPublishable publisher = PublisherFactory.createPublisher(type, file);            Feed feed = getFeed(type);            Channel channel = feed.getChannel();            ArrayList itemlist = feed.getItemList();            publisher.insertChannel(channel);            publisher.insertItemList(itemlist);            publisher.writeback(file);            return file;            }            

形成 RSS/Atom 摘要

在上一個(gè)過(guò)程中,發(fā)布工廠(chǎng)創(chuàng )建了一個(gè)發(fā)布者并向某一摘要插入相關(guān)的通道信息和項列表。


清單 5. 插入通道和項列表的示例代碼

            publisher.insertChannel(channel);            publisher.insertItemList(itemlist);            

要形成精確的通道和項列表,就要從數據庫中取出數據并向摘要模式中輸入取出的數據。下面演示了如何取出數據,然后向相關(guān) databean 中輸入信息:


清單 6. 摘要的示例代碼

            ...            NewsBeanManager newsmanager = new NewsBeanManager();            newslist = newsmanager.getAllNews(); //interact with database            ...            for (Iterator it = newslist.iterator(); it.hasNext(); it.next()) {            title = "News " + i + ": " + ((NewsBean) newslist.get(i)).getTitle();            link = ((NewsBean) newslist.get(i)).getLink();            author = ((NewsBean) newslist.get(i)).getAuthor();            timestamp = ((NewsBean) newslist.get(i)).getPublishTime();            id = String.valueOf(((NewsBean) newslist.get(i)).getNewsID());            description = ((NewsBean) newslist.get(i)).getSummary();            content = ((NewsBean) newslist.get(i)).getContent();            rssitem = new RssItem(title, link, author, timestamp, id,            description);            rssitemlist.add(i, rssitem);            atomitem = new AtomItem(title, link, author, timestamp, id,            description, content);            atomitemlist.add(i, atomitem);            i++;            }            





回頁(yè)首


實(shí)現技巧

在成功地實(shí)現新聞發(fā)布系統之后,您可能會(huì )受益于以下的部署技巧。

為最流行的摘要閱讀器實(shí)現 RSS 或者 Atom 摘要

要滿(mǎn)足最流行的摘要閱讀器的需要,在生成摘要文件時(shí)要注意以下幾點(diǎn)。

  • 在 XML 文件頭添加 RSS 和 Atom 版本信息,如 清單 7 所示:

    清單 7. 添加 RSS 和 Atom 版本信息的示例代碼
                    <?xml version="1.0" encoding="utf-8"?>                <rss version="2.0">                ...                <?xml version="1.0" encoding="utf-8"?>                <atom version="1.0">                

  • 為 RSS 和 Atom 通道提供鏈接信息。在 RSS 2.0 中,鏈接信息顯示為節點(diǎn),但是在 Atom 1.0 中,鏈接信息顯示為屬性。雖然鏈接對于 Atom 來(lái)說(shuō)不是強制項,但是為通道部分提供鏈接信息是一種不錯的做法(參見(jiàn) 清單 8)。


清單 8. 為通道提供鏈接信息的示例代碼

            <?xml version="1.0" encoding="utf-8" ??>            <rss?>            <channel?>            <title?>News Syndication</title?>            <link?>http://www.newssyndication.com</link?>            <description?>this is a news feed</description?>            ...            <?xml version="1.0" encoding="utf-8" ??>            <feed xmlns="http://www.w3.org/2005/Atom"?>            <title?>News Syndication</title>            <link  /?>            <updated?>2006-07-06T10:26:30Z</updated?>            <id>urn:uuid:60a76c80-d399-11d9-b93C-0003939e0af6</id?>            

在生成 XML 文件時(shí)支持全球化

在 XML 文件頭中添加編碼信息。


清單 9. 在 XML 文件頭中添加編碼信息的示例代碼

            <?xml version="1.0" encoding="utf-8"?>            

當實(shí)現寫(xiě) XML 文件的函數時(shí),使用 OutputStreamWriter 代替 FileWriter 把編碼設置為 utf-8。FileWriter 的默認編碼是 “GBK”。


清單 10. 使用 OutputStreamWriter 把編碼設置為 utf-8 的示例代碼

            OutputStreamWriter writer = new OutputStreamWriter(outputstream,"utf-8");            





回頁(yè)首


結束語(yǔ)

本文中,首先回顧了 RSS 和 Atom 摘要的相似點(diǎn)和不同點(diǎn),然后考察了使用兩種摘要類(lèi)型實(shí)現發(fā)布系統的體系結構。這種體系結構包括三個(gè)子系統,彼此相互配合工作。接下來(lái)在逐步演示之后,向您介紹了一些實(shí)現過(guò)程的技巧?,F在您可以享受在新聞?wù)袘眠@些高效方法了。



 

參考資料

學(xué)習


獲得產(chǎn)品和技術(shù)

  • 使用 IBM 試用軟件 構建您的下一個(gè)開(kāi)發(fā)項目,這些軟件可以直接從 developerWorks 下載。


討論

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
REST Service 的最佳實(shí)踐,第 1 部分: 重新解析 REST Service
分析了n個(gè)網(wǎng)站的rss
全面了解和解析Blog和RSS的含義
XML聚合格式 ATOM
RESTful GeoWeb學(xué)習手記(七):[轉]Atom 1.0 Syndication Format 概述
XML 問(wèn)題: Ajax 權衡:XML 的多種風(fēng)格
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久