JavaTM 2 Platform
Standard Ed. 6

java.beans
類別 XMLEncoder

java.lang.Object
  繼承者 java.beans.Encoder
      繼承者 java.beans.XMLEncoder

public class XMLEncoder
extends Encoder

XMLEncoder 類別是 ObjectOutputStream 的互補替換,可用於產生 JavaBean 的文本表示形式,所使用方式與用 ObjectOutputStream 創建 Serializable 物件的二進製表示形式的方式相同。例如,可以使用以下程式碼片段創建所提供的 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 的預設指示,其中它們被表示為符合 1.0 版的 XML 規範和 Unicode/ISO 10646 字元集 UTF-8 字元編碼的 XML 文檔。由 XMLEncoder 類別產生的 XML 文檔如下:

以下是一個 XML 歸檔檔案的範例,它包含 swing 工具套件中一些使用者介面元件:

 <?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 語法使用以下約定:

儘管只使用這三個標記就可以寫入所有物件圖形,但以下定義也包括在內,以便能夠更具體地表示普通資料結構:

有關的更多資訊,還可以參閱 The Swing Connection 中的 Using XMLEncoder 一文。

從以下版本開始:
1.4
另請參見:
XMLDecoder, ObjectOutputStream

建構子摘要
XMLEncoder(OutputStream out)
          使用 XML 編碼創建一個新的輸出串流,將 JavaBeans 發送給串流 out
 
方法摘要
 void close()
          此方法調用 flush,寫入結束後文,然後關閉與此串流有關的輸出串流。
 void flush()
          如果還沒有寫出導言,那麼此方法將寫出與 XML 編碼有關的導言,並隨後寫出從最後一次調用 flush 以來寫入串流中的所有值。
 Object getOwner()
          獲得此編碼器的所有者。
 void setOwner(Object owner)
          將此編碼器的所有者設置為 owner
 void writeExpression(Expression oldExp)
          記錄 Expression,以便 Encoder 在刷新串流的快取記憶體時產生實際輸出。
 void writeObject(Object o)
          將指定物件的 XML 表示形式寫入輸出中。
 void writeStatement(Statement oldStm)
          記錄 Statement,以便 Encoder 在刷新串流的快取記憶體時產生實際輸出。
 
從類別 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 編碼創建一個新的輸出串流,將 JavaBeans 發送給串流 out

參數:
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)
記錄 Statement,以便 Encoder 在刷新串流的快取記憶體時產生實際輸出。

此方法只應在初始化持久委託的上下文中調用。

覆寫:
類別 Encoder 中的 writeStatement
參數:
oldStm - 將寫入串流中的語句。
另請參見:
PersistenceDelegate.initialize(java.lang.Class, java.lang.Object, java.lang.Object, java.beans.Encoder)

writeExpression

public void writeExpression(Expression oldExp)
記錄 Expression,以便 Encoder 在刷新串流的快取記憶體時產生實際輸出。

此方法只應在初始化持久委託或設置編碼器從資源包中讀取資料的上下文中調用。

有關利用 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. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only