程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 最終還是手工輸出XML對象可靠

最終還是手工輸出XML對象可靠

編輯:關於JAVA

最終還是手工輸出XML對象可靠 2005年 01月06日 和xml打交道,常常是哭笑不得:我為什麼要花那麼大力氣和整個XML文檔打交通呢?實實在在的,我只不過想存取其中一個對象的屬性罷了!!前段時間了解了castor覺得這是一個解決方案,不過也還是需要整個文檔的讀寫更新。一來是時間限制不允許當前深入研究,而且那也是一個不算成熟的項目;二來呢,采納的話會和現在的digester讀取模式發生沖突,有點劃不過來。但是象科室設置的更新頻率看來越來越高,再放到XML中只讀靠手工改看來是不行的。因此打算把科室對象移植進數據庫,但一動手就發現同樣有不劃算的地方。

事實上是發現忽視了一個問題,其實也是XML和關系數據庫存儲實質的一個對比內容:XML周邊存取的手段的確不是非常成熟,但是它是以對象的層次結構存儲數據的,而關系數據庫則是平面形式地存儲。我目前打算使用secion轉為關系數據庫,目的是為了可以分科室的更改設置更方便,這在XML是一個文件,而到了關系數據庫,卻是整個的一堆的關系表(關系概念中同樣是一個實體,但此實體非彼實體,它意味著反應一個對象的一堆表),而且要與象表類等進行關聯,相當復雜的。當前這也許不是一個好主意,而且,在大項目中使用復雜的關系結構表達數量不多的記錄,似乎是一種成本效益比很低的過時的方法。所以,我猶豫了。

另一個辦法是做一個可更新的XML模件:處理手法包括:

1、修改SectionBase,使它是針對多個科室的多個XML工作,而不是象現在那樣一切解釋把所有的科室讀進去;

2、做一個更新各個科室的XML的方法;無論是casto的,還是其他什麼方法的;

3、做一個更新各個科室的界面,把它連到科室管理台。

這裡的關鍵是第二步。為確認第二步能夠以當前最簡單的方法完成,再次翻看先前下載的關於castor的文章,不過博客中國真是越來越弱不禁風,居然好久還動不了,過好長時間才把原來的文章打開再讀一篇。研讀結果仍是一樣的,如果采用castor就意味著要采用它的JDO,而不僅僅是XML的輸出,而目前我的讀入主要是使用digester;所以這裡包含著更大范圍的修改,而且包含著更大不定性的試用;這也是我上兩個星期暫時放開castor的原因:目前沒有時間深入研究它的使用思想和實際應用。看來,只能采用原始點的SAX或甚至字符串處理了。

再考慮一下常用的sax/xalan/jaxp/jdom幾種處理手法,如果不是單純對著非對象化的文檔內容工作,就是需要寫一個XSLT/和轉換器,而無論如何,要與一貫的JAVA對象/XML對象匹配的模式一起工作,還必須做到讓上面的這些文檔對象可以與digester後的Java對象互換的方法:沒聽說過!!從digester都沒有幾個人真的用過的情況下,我看就算上論壇問那幾個國內國外的老兄都是白問。我想這種方法如果有,一定就在 Digester的具體使用中,從jdom中獲得對象,以及重新轉為document對象——不過,沒有!!

看來,我要考慮一下自已實現的難道和可重用性是怎麼樣的。......一想下來,其實這也不是什麼難事,只需要在每個類那裡實現一個接口,比如說 write,然後逐級調用不就搞惦了麼?何必捨近求遠,找些不可靠的東西試用呢?一通百通,實際上手工輸出對象字符串一點都不是一件恐怖的事,我是讓那些文章作者給唬住了,關鍵就在於這是按對象輸出,程序量並不算大,而且也是挺好管理的。相比寫servlet輸出,小意思啦。

原始的方法不見得就是落後的,合適就行!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved