|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
java.lang.Object
|
+--java.beans.Encoder
|
+--java.beans.XMLEncoder
XMLEncoder クラスは ObjectOutputStream の補足的な代替クラスであり、ObjectOutputStream で Serializable オブジェクトのバイナリ表現を生成する場合と同様にして 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 文書には、次のような特徴があります。
XMLEncoder クラスは内部で冗長性削減アルゴリズムを使用するため、Bean のプロパティのデフォルト値がストリームに書き込まれない
以下は、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 つのタグで記述できますが、共通のデータ構造をより簡潔に表現するため、次の定義がなされています。
Integer クラスのインスタンスは <int>123</int> と記述できる。XMLEncoder クラスが、Java プリミティブ型と関連ラッパークラス間の変換を内部的に処理する Java リフレクションパッケージを使用する点に注意すること。XMLEncoder クラスの API 自体は、Object のみを取り扱う
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)
このメソッドは、スーパークラスの実装を呼び出し、 oldExp を記録することにより、ストリームのフラッシュ時に実際の出力を生成します。 |
void |
writeObject(Object o)
指定されたオブジェクトの XML 表現を出力に書き込みます。 |
void |
writeStatement(Statement oldStm)
このメソッドは、スーパークラスの実装を呼び出し、 oldStm を記録することにより、ストリームのフラッシュ時に実際の出力を生成します。 |
| クラス java.beans.Encoder から継承したメソッド |
get, getExceptionListener, getPersistenceDelegate, remove, setExceptionListener, setPersistenceDelegate |
| クラス java.lang.Object から継承したメソッド |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| コンストラクタの詳細 |
public XMLEncoder(OutputStream out)
out に JavaBeans を送信する、新しい出力ストリームを作成します。
out - オブジェクトの XML 表現の送信先となるストリームXMLDecoder.XMLDecoder(InputStream)| メソッドの詳細 |
public void setOwner(Object owner)
owner に設定します。
owner - このエンコーダの所有者getOwner()public Object getOwner()
setOwner(java.lang.Object)public void writeObject(Object o)
Encoder 内の writeObjecto - ストリームに書き込まれるオブジェクトXMLDecoder.readObject()public void writeStatement(Statement oldStm)
oldStm を記録することにより、ストリームのフラッシュ時に実際の出力を生成します。
Encoder 内の writeStatementoldStm - ストリームに書き込まれる文public void writeExpression(Expression oldExp)
oldExp を記録することにより、ストリームのフラッシュ時に実際の出力を生成します。
Encoder 内の writeExpressionoldExp - ストリームに書き込まれる式public void flush()
flush を最後に呼び出したときからストリームに書き込まれたすべての値を書き出します。フラッシュ後、このストリームに書き込まれた値の内部参照はすべてクリアされます。
public void close()
flush を呼び出し、閉じるポストアンブルを書き込み、このストリームに関連付けられている出力ストリームをクローズします。
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
| 概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド | ||||||||||
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.