« 執務室へ最初に入り込んだ者が、工場を乗っ取れる | メイン | 共生のための競争であって、適者生存のための競争ではない »
2009年3月12日
XMLEncoderとXMLDecoderを利用したXMLファイルの読み込みと書き出し
Javaはプラットフォーム依存をしないように作られているので、設定データ保存に関してWindowsでお得意のiniファイルやレジストリを利用するのではなくXMLファイルに書き出すことが普通なようです。
int、doubleなどの基本型だけでなく、オブジェクト型のデータのXMLファイルへの書き出しがサポートしているようです。
| デフォルトで XML への書き出しがサポートされているクラスには Swing のコンポーネントを始め AWT や Swing 関連のクラスが多いのですが他にも Vector, ArrayList, LinkedList, HashSet, TreeSet, TreeMap, HashMap, Hashtable などは要素あるいはキーと値のペアが XML に書き出されます。 (AbstractCollection, AbstractList, AbstractMap のサブクラスや Hashtable やそのサブクラスであれば要素あるいはキーと値のペアが XML に保存されます。jdk1.5.0)(引用元) |
簡単なサンプルプログラムを作成してみました。構成は以下の通り
●DataSet.java・・・データセットを定義し、データを保持します。
●XMLStream.java・・・実際のファイル書き出し・読み込みを行います。
●Main.java・・・メインの関数です。
Main.javaからXMLStream内の関数を呼び出して、DataSetで保持されたデータの書き出しやXMLファイルの読み込みを行います。
データを保持するDataSet.javaは一定の規則を守る必要がある模様。
| ファイルに保存するデータを保持するクラス(今回の例ではDataSetクラス)を定義します。ただし、このクラスは次のような決まりを守る必要があります。
* 引数のないデフォルトコントラスタが定義されている |
実際のサンプル・コードを見てみましょう。
●DataSet.java
| /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package xmlencodertest; import java.util.ArrayList; /** private int value; public DataSet() { public DataSet(int power, String name, ArrayList lists) { public void setValue(int i) { public void setName(String s) { public String getName() { public void setLists(ArrayList a){ public ArrayList getLists(){ } |
●XMLStream.java
| /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package xmlencodertest; import java.beans.XMLDecoder; /** /* XMLファイル */ /** /** ArrayList DataSet dataSet = new DataSet(100, "ジャイアン", list); try { } /** DataSet dataSet = null; System.out.println("value=" + dataSet.getValue()); } } |
●Main.java
| /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package xmlencodertest; /** /* XMLファイル */ /** //書き出す } |
実際に保存されたXMLファイル(test.xml)は以下のようになります。
| <?xml version="1.0" encoding="UTF-8"?> <java version="1.6.0_06" class="java.beans.XMLDecoder"> <object class="xmlencodertest.DataSet"> <void property="lists"> <void method="add"> <string>のびた</string> </void> <void method="add"> <string>すねお</string> </void> </void> <void property="name"> <string>ジャイアン</string> </void> <void property="value"> <int>100</int> </void> </object> </java> |
<参考>
・CodeZine:XMLEncoderとXMLDecoderを使用したデータの書き出しと復元
・Bean Persistence:XML に保存可能なオブジェクト(魚拓)
・プログラミング・ノウハウ集 ~ JAVA 編 (1):JavaとXMLファイルのデータ連携
・Class XMLEncoder
・Class XMLDecoder
投稿者 cazper : 2009年3月12日 12:30
|
Tweet
トラックバック
このエントリーのトラックバックURL:
http://www.cazoo.jp/cgi/mt/mt-tb.cgi/2469
このリストは、次のエントリーを参照しています: XMLEncoderとXMLDecoderを利用したXMLファイルの読み込みと書き出し:
» Aquarium build from Aquarium build
Cazperのつれづれ日記: XMLEncoderとXMLDecoderを利用したXMLファイルの読み込みと書き出し [続きを読む]
トラックバック時刻: 2022年1月11日 23:30