public class XMLEncoder extends Encoder implements AutoCloseable
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
だけを取り扱う。
詳細は、「The Swing Connection」の「Using XMLEncoder」を参照してください。
XMLDecoder
, ObjectOutputStream
コンストラクタと説明 |
---|
XMLEncoder(OutputStream out)
XMLエンコーディングを使用してJavaBeansをストリーム
out に書き出すための新しいXMLエンコーダを作成します。 |
XMLEncoder(OutputStream out, String charset, boolean declaration, int indentation)
指定された
charset を使用し、指定されたindentation から開始してJavaBeansをストリームout に書き出すための新しいXMLエンコーダを作成します。 |
修飾子と型 | メソッドと説明 |
---|---|
void |
close()
このメソッドは、
flush を呼び出し、閉じるポストアンブルを書き込んでから、このストリームに関連付けられている出力ストリームを閉じます。 |
void |
flush()
このメソッドは、XMLエンコーディングに関連付けられているプリアンブルを書き出し(まだ書き出されていない場合)、
flush を最後に呼び出したときからストリームに書き込まれたすべての値を書き出します。 |
Object |
getOwner()
このエンコーダの所有者を取得します。
|
void |
setOwner(Object owner)
このエンコーダの所有者を
owner に設定します。 |
void |
writeExpression(Expression oldExp)
ストリームのフラッシュ時に実際の出力が生成されるように、式を記録します。
|
void |
writeObject(Object o)
指定されたオブジェクトのXML表現を出力に書き込みます。
|
void |
writeStatement(Statement oldStm)
ストリームのフラッシュ時に実際の出力が生成されるように、文を記録します。
|
get, getExceptionListener, getPersistenceDelegate, remove, setExceptionListener, setPersistenceDelegate
public XMLEncoder(OutputStream out)
out
に書き出すための新しいXMLエンコーダを作成します。out
- オブジェクトのXML表現の書込み先となるストリームIllegalArgumentException
- out
がnull
である場合XMLDecoder.XMLDecoder(InputStream)
public XMLEncoder(OutputStream out, String charset, boolean declaration, int indentation)
charset
を使用し、指定されたindentation
から開始してJavaBeansをストリームout
に書き出すための新しいXMLエンコーダを作成します。out
- オブジェクトのXML表現の書込み先となるストリームcharset
- 要求された文字セットの名前。正規名か別名declaration
- XML宣言を生成するかどうか。別のXMLドキュメントのコンテンツを埋め込む場合は、false
に設定しますindentation
- XMLドキュメント全体をインデントするための空白文字の数IllegalArgumentException
- out
またはcharset
がnull
の場合、あるいはindentation
が0より小さい場合IllegalCharsetNameException
- charset
の名前が不正な場合UnsupportedCharsetException
- 指定された文字セットが現在のJava仮想マシンでは利用できない場合UnsupportedOperationException
- ロードされた文字セットがエンコーディングをサポートしない場合Charset.forName(String)
public void setOwner(Object owner)
owner
に設定します。owner
- このエンコーダの所有者。getOwner()
public Object getOwner()
setOwner(java.lang.Object)
public void writeObject(Object o)
writeObject
、クラス: Encoder
o
- ストリームに書き込まれるオブジェクト。XMLDecoder.readObject()
public void writeStatement(Statement oldStm)
このメソッドは、持続的な委譲を初期化するコンテキスト内だけで呼び出すようにしてください。
writeStatement
、クラス: Encoder
oldStm
- ストリームに書き込まれる文。PersistenceDelegate.initialize(java.lang.Class<?>, java.lang.Object, java.lang.Object, java.beans.Encoder)
public void writeExpression(Expression oldExp)
このメソッドは、持続的な委譲を初期化するコンテキスト内、またはリソース・バンドルから読み込むようにエンコーダを設定するコンテキスト内だけで呼び出すようにしてください。
XMLEncoderでリソース・バンドルを使用する詳細については、http://java.sun.com/products/jfc/tsc/articles/persistence4/#i18nを参照してください。
writeExpression
、クラス: Encoder
oldExp
- ストリームに書き込まれる式。PersistenceDelegate.initialize(java.lang.Class<?>, java.lang.Object, java.lang.Object, java.beans.Encoder)
public void flush()
flush
を最後に呼び出したときからストリームに書き込まれたすべての値を書き出します。フラッシュ後、このストリームに書き込まれた値の内部参照はすべてクリアされます。public void close()
flush
を呼び出し、閉じるポストアンブルを書き込んでから、このストリームに関連付けられている出力ストリームを閉じます。close
、インタフェース: AutoCloseable
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.