利用JDOM開發日文外來語網路電子辭典

來源:互聯網
上載者:User
dom (作者:陳廣佳)

本文並不意圖對JDOM這種用於快速開發XML的第三方工具包進行詳盡的介紹或要涵蓋JDOM對XML的所有處理方法,因為這方面的文章及資料已經很豐富,僅希望能通過本人使用JDOM進行具體開發的案例給沒有用過或剛開始使用JDOM的朋友們一個對該API較具形態的一點認知。

項目概述以及XML API的選擇--JDOM API
本人所在的出版社近期將中日韓文工具書轉成了電子資料,在開發教學多媒體的同時希望能夠開發基於網路的電子辭典(先進行日文外來語詞典的開發),後一項目由本人負責。由於項目將以JAPPLET作為用戶端的選擇,而詞庫資料以XML文檔形式提供,因此我開始收集JAVA對XML處理的相關資料。我最先是在JAVA.SUN.COM上看到JDOM的有關介紹,在訪問了JDOM ORG的網站以及看了幾篇對JDOM敘述得很好的文章後,我決定使用JDOM來完成該項目中對XML的處理。

JDOM API版本是在JDOM ORG上下載的JDOM Beta6,現在最新的版本是JDOM Beta7,相對於Beta6,Beta7進行了極大的改進。(下載JDOM的最新版本)
我使用JBUILDER3進行開發,JDOM需要做為一個增加的類庫加進其JAVA Libraries裡。我的JDOM是裝在E盤的根目錄下,配置如下:

NAME:JDOM
CLASS PATH:E:\jdom6bt\jdom-b6\build\jdom.jar
SOURCE PATH:E:\jdom6bt\jdom-b6\src\java.zip
DOC PATH:E:\jdom6bt\jdom-b6\build\jdom.jar
但JBUILDER5已經對JDOM有直接的支援,JDOM API已經內嵌在其JAVA Libraries裡,這樣我們使用JDOM就更方便。

詞庫資料資料XML文檔結構
在該項目中XML的文檔結構比較簡單,以<dict>為根,主體以日文片假名詞條為單元(<word>),下面分別以<spell><prop><mean>各子項目對應片假名拼字、外來語拼字、中文解釋各項內容:


該項目中,所使用的XML並不是使用JDOM產生,但要使用JDOM產生同樣的XML結構也是很簡單的,以下是簡單實現程式碼片段:


由於要支援多國語,所以XML以UTF-8編碼,這裡需要說明的是,JDOM的XMLOutputer預設輸出字元編碼為UTF-8,如果要輸出別種編碼,可使用outputter.setEncoding()進行設定(請參考http://www.jdom.org/docs/faq.html)。在該FAQ裡只說明了OUTPUT的編碼情況,但是並沒有說明JDOM在輸入處理XML時對編碼的要求,我開始使用時XML文檔是以UCS-2編碼的,但JDOM並不能正常處理,出現的錯誤:

org.jdom.JDOMException:Error in building:The name""is not legal for JDOM/XML elements:XML names cannot be null or empty
在改用了UTF-8編碼後,JDOM對XML的處理就能正常進行,不知是否與JAVA內部的UNICODE編碼於外來檔案的UNICODE編碼高低位元組有關(對於處理一般的UNICODE檔案,在輸入時,需要把檔案的高低位元組互換才能使JAVA對其進行無誤的處理),我暫時還沒找到有關的資料。

使用JDOM實現電子辭典的詞條查詢功能
要實現的查詢功能主要有兩個,①按日文片假名模糊查詢、②按外來語模糊查詢:

(這裡的模糊查詢只展示簡單的首字元相同&字元數相同的尋找法則)這裡僅挑取與JDOM有關的語句展示:


使用JDOM為XML文檔增加子項目
為了要往XML資料文檔裡增加韓國方面將完成的韓文翻譯存放空間,需要往XML文檔裡增加子項目-koreamean,增加子項目的實現與上面所介紹的產生XML文檔差不多,僅藉此簡單舉一個JDOM文檔輸出的例子,以及提一下本人在處理時所遇到的一些問題。

程式片段:


結果:

我首先使用的是用FileWrieter類輸出,輸出的效果是可以輸出XML檔,卻出現不能把所有內容全部輸出的情況,最後一部分的詞條被遺漏,懷疑是使用FileWriter類輸出檔案長度受限制的原因。

於是使用FileOutputStream類進行重新輸出,輸出結果就完全正確了。

小結
JDOM具有豐富、強大的XML處理能力,本文僅用執行個體有限的展示了其中幾項常用的功能,相信隨著JDOM正式被接受成為Java規範要求,它的應用越來越廣範,讀者們會看到更多更系統的對JDOM的應用例示。

參考資料
JDOM ORG網站
JSRs:Java Specification Requests Detail-- JSR 102 JDOM 1.0
Easy Java/XML integration with JDOM--By Jason Hunter and Brett McLaughlin http://www.javaworld.com/javaworld/jw-05-2000/jw-0518-jdom.html
http://www.ibiblio.org/xml/slides/nypc/jdom/ 

相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。