JavaTM 2 Platform
Standard Ed. 5.0

java.beans
クラス XMLEncoder

java.lang.Object
  上位を拡張 java.beans.Encoder
      上位を拡張 java.beans.XMLEncoder

public class XMLEncoder
extends Encoder

XMLEncoder クラスは ObjectOutputStream の補足的な代替クラスであり、ObjectOutputStreamSerializable オブジェクトのバイナリ表現を生成する場合と同じ方法で JavaBean のテキスト表現を生成します。たとえば、次のコードでは、提供された JavaBean とそのすべてのプロパティのテキスト表現を生成できます。


       XMLEncoder e = new XMLEncoder(
                          new BufferedOutputStream(
                              new FileOutputStream("Test.xml")));
       e.writeObject(new JButton("Hello, world"));
       e.close();
 
API は似ているものの、XMLEncoder クラスは、JavaBean のグラフをその公開プロパティのテキスト表現としてアーカイブ化する目的で設計されています。この方式で作成された文書は、Java ソースファイルと同様、必要なクラスの実装が変更から保護されています。プロセス間通信および通常目的の直列化には、これまでどおり ObjectOutputStream を使用することをお勧めします。

XMLEncoder クラスは、JavaBean を、XML 仕様バージョン 1.0 と Unicode/ISO 10646 文字セットの UTF-8 文字セットに準拠した XML 文書として表現するデフォルトの指定を提供します。XMLEncoder クラスによって生成される XML 文書には、次のような特徴があります。

以下は、swing ツールキットのユーザインタフェースコンポーネントを含む XML アーカイブの例です。


 <?xml version="1.0" encoding="UTF-8"?>
 <java version="1.0" class="java.beans.XMLDecoder">
 <object class="javax.swing.JFrame">
   <void property="name">
     <string>frame1</string>
   </void>
   <void property="bounds">
     <object class="java.awt.Rectangle">
       <int>0</int>
       <int>0</int>
       <int>200</int>
       <int>200</int>
     </object>
   </void>
   <void property="contentPane">
     <void method="add">
       <object class="javax.swing.JButton">
         <void property="label">
           <string>Hello</string>
         </void>
       </object>
     </void>
   </void>
   <void property="visible">
     <boolean>true</boolean>
   </void>
 </object>
 </java>
 
XML 構文は、次の規約に準拠しています。

すべてのオブジェクトグラフはこれら 3 つのタグで記述できますが、共通のデータ構造をより簡潔に表現するため、次の定義がなされています。

詳細については、『The Swing Connection』の記事「Using XMLEncoder」を参照してください。

導入されたバージョン:
1.4
関連項目:
XMLDecoder, ObjectOutputStream

コンストラクタの概要
XMLEncoder(OutputStream out)
          XML エンコーディングを使ってストリーム out に JavaBeans を送信する、新しい出力ストリームを作成します。
 
メソッドの概要
 void close()
          このメソッドは、flush を呼び出し、閉じるポストアンブルを書き込み、このストリームに関連付けられている出力ストリームをクローズします。
 void flush()
          このメソッドは、XML エンコーディングに関連付けられたプリアンブルを書き出し、flush を最後に呼び出したときからストリームに書き込まれたすべての値を書き出します。
 Object getOwner()
          このエンコーダの所有者を取得します。
 void setOwner(Object owner)
          このエンコーダの所有者を owner に設定します。
 void writeExpression(Expression oldExp)
          ストリームのフラッシュ時に Encoder が実際の出力を生成するように、Expression を記録します。
 void writeObject(Object o)
          指定されたオブジェクトの XML 表現を出力に書き込みます。
 void writeStatement(Statement oldStm)
          ストリームのフラッシュ時に Encoder が実際の出力を生成するように、Statement を記録します。
 
クラス java.beans.Encoder から継承されたメソッド
get, getExceptionListener, getPersistenceDelegate, remove, setExceptionListener, setPersistenceDelegate
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

XMLEncoder

public XMLEncoder(OutputStream out)
XML エンコーディングを使ってストリーム out に JavaBeans を送信する、新しい出力ストリームを作成します。

パラメータ:
out - オブジェクトの XML 表現の送信先となるストリーム
関連項目:
XMLDecoder.XMLDecoder(InputStream)
メソッドの詳細

setOwner

public void setOwner(Object owner)
このエンコーダの所有者を owner に設定します。

パラメータ:
owner - このエンコーダの所有者
関連項目:
getOwner()

getOwner

public Object getOwner()
このエンコーダの所有者を取得します。

戻り値:
このエンコーダの所有者
関連項目:
setOwner(java.lang.Object)

writeObject

public void writeObject(Object o)
指定されたオブジェクトの XML 表現を出力に書き込みます。

オーバーライド:
クラス Encoder 内の writeObject
パラメータ:
o - ストリームに書き込まれるオブジェクト
関連項目:
XMLDecoder.readObject()

writeStatement

public void writeStatement(Statement oldStm)
ストリームのフラッシュ時に Encoder が実際の出力を生成するように、Statement を記録します。

このメソッドは、持続性デリゲートの初期化コンテキスト以外では呼び出しません。

オーバーライド:
クラス Encoder 内の writeStatement
パラメータ:
oldStm - ストリームに書き込まれる文
関連項目:
PersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder)

writeExpression

public void writeExpression(Expression oldExp)
ストリームのフラッシュ時に Encoder が実際の出力を生成するように、Expression を記録します。

このメソッドは、持続性デリゲートの初期化時、またはリソースバンドルから読み取れるようにエンコーダを設定しているとき以外は呼び出せません。

XMLEncoder でリソースバンドルを使用する方法については、http://java.sun.com/products/jfc/tsc/articles/persistence4/#i18n を参照してください。

オーバーライド:
クラス Encoder 内の writeExpression
パラメータ:
oldExp - ストリームに書き込まれる式
関連項目:
PersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder)

flush

public void flush()
このメソッドは、XML エンコーディングに関連付けられたプリアンブルを書き出し、flush を最後に呼び出したときからストリームに書き込まれたすべての値を書き出します。フラッシュ後、このストリームに書き込まれた値の内部参照はすべてクリアされます。


close

public void close()
このメソッドは、flush を呼び出し、閉じるポストアンブルを書き込み、このストリームに関連付けられている出力ストリームをクローズします。


JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。