本來想做個“小玩意”,這個“小玩意”的就是一個通訊錄(之所以這么想是因為手機丟了,好多熟人都聯系不上了)。本來也不難,界面用SWT&Jface做就行了,數據的存儲與讀取可以通過JDBC或Hibernate調用數據庫。雖然說數據庫的調用我并不是很熟,不過好在這方面的書籍大把大把的有,找找書照著做應該沒有什么問題。但是我并不想用這么“俗”的方法,以前老是聽說XML怎么這么不錯,接觸的也不少,看也能看懂,但是沒有用XML做過數據存儲,于是想能不能不用數據庫而改用XML來存儲通訊錄里的資料。仔細想想應該能行,無非就是一些元素和標識,XML應該挺適合做通訊錄的數據來源。但是想歸想,做歸做,首先要解決幾個問題:
1、 在java中怎么讀XML文件?用什么API來操作?
因為不能上網,所以我要解決問題只能求助我電腦里的藏書了。找啊找,沒費什么勁就在jdk文檔里與一個ppt文件里發現了解決問題的線索:java里的org.w3c.dom包與org.xml.sax包提供了解決的這個問題應該用到的類。其中dom的意思是Document Object Model,sax的意思是Simple API for XML。在兩個的特點我照ppt抄一下,
Dom:
• 通過樹型結構存取XML文檔
• 由元素節點和文本節點組成
• 可以在樹的某個節點上向前或向后移動
• 與SAX相比需要更大的內存
• org.w3c.dom.*
Sax:
• 串行存取文檔
• 輕量級、快速
• 編程較難
• 僅用于串行存取
• org.xml.sax.*
各有各的特點,不管怎么說,對于我這個小玩意,兩個應該都能用。于是我就照著書上的例子試著建了幾個類,寫了一些代碼。這些類分別是DocHandler、XMLtest,還有應該xml文件:test.xml。但是還是失敗了,出現了空指針異常,描述是No value for sax.parser property,出現問題的代碼是Parser p = ParserFactory.makeParser(),問題是我是照著ppt上的代碼寫的,不知道出現了什么問題。后來我發現這是2003年的東西了,ppt上面用的類很多都是過時了的。找別的書也沒有找到解決方法,無奈。
2、 怎么寫XML文件?
我對“小玩意”的設計是不僅能從界面上瀏覽通訊錄上的資料,而且還能進行資料的錄入(這應該是基本要求吧)。但是我發現找不到寫XML文件的方法(在我的電腦里找不到)。有一個類java.beans.XMLEncoder應該可以生成指定對象的XML文件,但是好像只能對swing的對象進行的操作。
不能上網,只能放在以后在說了,今天先放一放。