課程設計初養成

         開學兩週,做數據結構的課程設計,沒有課,可以說是又延長了兩週的假期。我分到的題目是由一個XML文件建立一個新聞網站。
       上學期就開始對XML感興趣,用Jdom寫了點小程序,算是實驗,用它拔過我的blog文章摘要及評論,感覺jdom用起來很方便,xml的樹狀結構更是清晰明瞭。所以這次那道題目一點都不迷惑,還有些懷疑老師是不是給我放水,呵呵。但是,這次沒打算用jdom做,那樣未免有些投機取巧了,這道題目的目的就在於xml文件的解析和樹狀數據結構的建立,都不難,再不自己做就太說不過去了。
       還是用java來做,比較容易上手,說實話現在要是再讓我用c++做,還真得先找個函數庫做後備,雖然語法都應該沒什麼問題,但是有什麼函數就都不知道了。因爲xml要用的是unicode編碼,支持漢字,所以要採用按照char爲單位讀取的reader,而不是傳統的inputstream,這樣就可以讀取xml文件了。我沒有使用帶buffer的reader(沒去找,也不知道有沒有),而是先將reader中的char挨個讀入到一個string中,每當讀完一個tag(就是一對尖括號)就將其封裝爲一個element,作爲一個樹節點。當讀完xml文件,樹狀結構也就建立好了。
       樹的建立用的是先根遍歷算法,這對於xml文件的格式來說十分舒服自然。這裏有一點新的認識就是表徵一個tag結束的</  >,其實它裏面的type只是爲了人們看着清楚,對於解析起來說,完全可以不用考慮這個結束標記的type是什麼(合式檢查就另當別論了)。我的做法是當遇到新的tag時,建立節點,添加父子關係,然後將新節點壓棧,作爲當前的父節點,當遇到<  />標籤的時候,進行彈棧,直到沒有新的節點可以建立並且棧爲空退出。(一開始沒有考慮<tpye  />的情況,導致可能會造成堆棧錯誤,其實只要不對那個節點進行壓棧就可以了)
       這樣就可以將xml文件解析成一棵樹的結構,之後再對其進行遍歷提取信息,先是在網頁上就可以了。目前只做到這裏,但是後面的就沒什麼了,倒是分析BSP的feed格式挺有意思。看了國內外的幾個大的BSP發現了三種規範:rss、atom、rdf。前兩種都聽說過,只是這最後一種是頭回見。國內基本用的都是rss,atom和rdf幾乎沒有用的,找到兩個國外的網站用的是那兩個。雖然是三個不同的標準,但是大體結構都還是差不多的,基本信息也都出入不大,所以遍歷搜索信息的算法可以基於對標準的人工分析,不用靠“猜”,只是這樣就需要針對每一個標準提供不同的算法來解析。而還會有一些網站的feed不是按照這種規範來做的,可能就會需要特定優化了。
       寫到這裏發現忘記說一個很重要的事情,就是我打算把這個課程設計做成什麼東西。我想把它做成一個網站,任何人都可以隨意來添加feed,feed源保存到數據庫中,然後在頁面顯示全部或者部分新聞的標題,讀者可以點擊標題,或者只是指向,察看摘要。基本就是這個功能,沒有什麼特色,沒有什麼新意,只是想做成這個樣子。如果有空間可以放的話我倒是挺想掛出去,看看一段時間之後上面會有哪些東西。估計都是廣告了,呵呵。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章