MENU

Java XMLEncoderでオブジェクトを保存

目次

Java XMLEncoderでオブジェクトを保存、XMLDecoderで復元

JavaでオブジェクトをXML形式で保存するサンプルプログラムを紹介します。
XMLの出力にはjava.beans.XMLEncoderを使用します。
またjava.beans.XMLDecoderを使用し、保存したオブジェクトを復元するサンプルプログラムも同時に紹介します。


サンプルプログラム

  • プライベートで宣言されたフィールドは、Getter及びSetterメソッドを定義すると保存されます。
  • 変数に変更がある場合のみ、XMLファイルに保存されます。
  • 保存するオブジェクトはjava.util.HashMapや、java.util.ArrayList等も指定できます。簡易的にオブジェクトの状態を保存しておくのに便利です。

※保存するクラスのサンプルとして、以下のクラスを使用します。

実行結果

◆実行例

◆出力結果

ソフト名:Chat&Messenger チャットもメッセンジャーも!!
URL:https://chat-messenger.com/

◆C:\\FreeSoft.xmlの内容

<?xml version="1.0" encoding="UTF-8"?> 
<java version="1.5.0_08" class="java.beans.XMLDecoder"> 
 <object class="FreeSoft"> 
  <void property="name"> 
   <string>Chat&Messenger チャットもメッセンジャーも!!</string> 
  </void> 
  <void property="url"> 
   <string>https://chat-messenger.com/</string> 
  </void> 
 </object> 
</java> 

利用する場合の注意点

便利な java.beans.XMLEncoder、 java.beans.XMLDecoder クラスですが、 Chat&Messenger で実践的に利用すると、極めてレアケースですが、java.beans.XMLEncoder でXMLへ出力時、ファイルが0バイトになる問題を確認しています。
0バイトのファイルを読み込むと「標準エラー出力」にParseExceptionが記録されます。

この原因はFileOutputStream のインスタンスを生成した時点で、ファイルは空になってしまいます。
FileOutputStream のインスタンス生成後、XMLデータを出力する前にJavaプロセスがシャットダウンされると発生すると考えています。

Chat&Messenger ではこの問題のため、バックアップファイルを作成し問題を回避しています。

  • URLをコピーしました!
目次