以下是Readme.txt檔案的本文
一、使用說明
程式入口命令
cd F:/java/2003012142
set classpath=classes
javac -d classes src/RssParser.java
java RssParser
操作
互動部分在左側的樹
左鍵選擇---狀態列顯示RSS的URL
右鍵彈出---該對象的方法
二、功能
簡單快速查看網上的RSS資源,支援RSS2.0版本。
可以添加、刪除RSS,可以所有頻道一起更新。
三、特點
涉及:異常處理、Swing圖形介面、多線程、本地IO操作、網路編程、XMLDOM操作
四、有待改進
支援RSS1.0等版本、支援Atom版本。
UI進階:HTML解析查看摘要、菜單功能完善。
本地化資料。(支援離線瀏覽)
五、RSS概說
·目前互連網上提供RSS訂閱服務的大多是Blog網站,新聞門戶網站。
近期Google、百度等搜尋引擎也提供了各種形式的RSS服務。
一周前,在本人與學生清華門戶網站、學生網路電視台的共同努力下,終於在學生清華門戶網站後台做好了RSS源,使其成為清華校園網第一家提供RSS訂閱服務的網站。計划下學期做完其市場調研後聯絡網路中心,向全校各網站推廣。
·目前網上流行的RSS閱讀器不少,國產的不多,多數都比較垃圾。
網上能下載到的開源的這類程式幾乎沒有,僅有的RSSBandit等開來源程式還都是要求.NET FrameWorks運行環境的。
我打算利用Java跨平台優勢和網路編成優勢,填補這一空缺。
·RSS優勢不用我講。
上個月的報道,支援RSS訂閱的手機已經上市。
這半年來,許多Blog精英都在討論Feed://的網路通訊協定的建設的技術規範問題。
六、感想
XML與張量
XML的基本屬性是“良構”Well Structed
張量的基本屬性是“多線性”Multilinear
XML的魅力在於“擴充”Extensible
張量的魅力在於“萬有性”Universal
推測:發明XML的人一定具有良好的代數素養。
W3C與WTO
W3C是互連網技術的正常化組織。
WTO是世界貿易的正常化組織。
全球化浪潮“甚囂塵上”的今天,做技術的人不能不關注W3C,就像做生意的人不能不關注WTO一樣。
指令碼不是程式
本人長期寫慣了指令碼,從Flash的ActionScript到DHTML的Javascript,很不注意代碼的規範。
習慣了快速解決的思路,做一個稍大點的程式,比如這次Java大作業,就發現自己的很多陋習非常影響程式的書寫效率。
面向解決的思想先入為主,物件導向的思想尚未在我的大腦中紮根。僅憑這幾次作業的訓練,是遠遠不夠的。
七、測試報告
本地URL以file:///開頭的路徑成功解析
網路上的URL以http://開頭的路徑解析失敗(Permission denied),關閉防火牆(金山網鏢6)後,連網成功,RSS解析成功。
多線程(20)並行,連網效率大幅度提高,返回結果順序為先串連成功者先顯示。
正在串連的RSSNode其名稱用()標記,解析成功後去掉()標記。
全程狀態列提示,包括所有異常捕獲。
大多數RSS2.0都能成功解析,百度的出錯,提示說字元集方面有錯,尚未解決。
強壯性漏洞:
1.若頻道定義檔案opml.xml不存在則程式無法運行。
2.477行更新tree的外觀時會隨機拋出null 指標異常,而且不能捕獲。
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTreeUI.paintRow(Unknown Source)
at javax.swing.plaf.basic.BasicTreeUI.paint(Unknown Source)
at javax.swing.plaf.metal.MetalTreeUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
搞不懂,沒解決,但是不影響程式正常運行。只是運行到477行updateUI()時Tree偶爾會變形,很詭異。
將該行注釋掉也可以。
合理性欠缺:添加新RSS網站,若無效仍然會留下。
細節問題: 彈出對話方塊中的漢字太醜陋,故改用英文。
彈出對話方塊會搞丟,彈出對話方塊後切換到其他應用程式,然後再通過按一下滑鼠Windows工作列則回到Java程式主介面見不到對話方塊在它上面,但是通過Alt+Tab切換回Java程式就能看到對話方塊。