JavaTM 2 Platform
Standard Ed. 6

javax.xml.bind.attachment
類別 AttachmentMarshaller

java.lang.Object
  繼承者 javax.xml.bind.attachment.AttachmentMarshaller

public abstract class AttachmentMarshaller
extends Object

啟用 JAXB 編組來優化二進制資料存儲。

此 API 支持 JAXB 編組過程與基於 MIME 的套件處理器之間的協作,有效地創建優化的二進制資料格式。JAXB 實作對基於 MIME 的套件的根正文進行編組,將可參考 MIME 部分的創建委託給實作此抽象的基於 MIME 的套件處理器。

isXOPPackage() 為 true 時啟用 XOP 處理。有關詳細資訊,請參閱 addMtomAttachment(DataHandler, String, String)

addSwaRefAttachment(DataHandler) 支持 WS-I Attachment Profile 1.0,編組程序針對每個與 {http://ws-i.org/profiles/basic/1.1/xsd}swaRef 相關的 JAXB 屬性調用該方法。

從以下版本開始:
JAXB 2.0
另請參見:
Marshaller.setAttachmentMarshaller(AttachmentMarshaller), XML-binary Optimized Packaging, WS-I Attachments Profile Version 1.0.

建構子摘要
AttachmentMarshaller()
           
 
方法摘要
abstract  String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String elementNamespace, String elementLocalName)
          將用於優化二進制存儲的二進制 data 作為附件。
abstract  String addMtomAttachment(DataHandler data, String elementNamespace, String elementLocalName)
          將用於優化二進制存儲的 MIME 內容 data 作為附件。
abstract  String addSwaRefAttachment(DataHandler data)
          將 MIME data 作為附件添加,並返回附件的內容 id(即 cid)。
 boolean isXOPPackage()
          只讀屬性,如果 JAXB 編組器應該啟用 XOP 創建,則返回 true。
 
從類別 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

建構子詳細資訊

AttachmentMarshaller

public AttachmentMarshaller()
方法詳細資訊

addMtomAttachment

public abstract String addMtomAttachment(DataHandler data,
                                         String elementNamespace,
                                         String elementLocalName)

將用於優化二進制存儲的 MIME 內容 data 作為附件。

正如 Creating XOP Packages 中的步驟 3 所述,當 isXOPPackage()true 時,JAXB 編組過程針對每個資料型別為 "base64Binary" 的元素調用此方法。

方法實作程序決定是將 data 單獨附加還是作為 base64Binary 資料內嵌。如果實作選擇將二進制資料存儲作為 MIME 的一部分進行優化,則實作負責將 data 附加到基於 MIME 的套件中,然後分派一個唯一的內容 id(即 cid),用來標識 MIME 訊息中的 MIME 部分。此方法返回 cid,cid 使 JAXB 編組程序能夠編組一個參考該 cid 的 XOP 元素,而不是編組二進制資料。當該方法返回 null 時,JAXB 編組程序將 data 作為 base64binary 資料內嵌。

此方法的調用程序要求滿足以下約束條件。如果包含 data 的元素 infoset 項具有屬性 xmime:contentType,或者代表 data 的 JAXB 屬性/欄位使用已知的 MIME 型別進行註解,則 data.getContentType() 應該被設置為 MIME 型別。

elementNamespaceelementLocalName 參數提供包含二進制資料的上下文。基於 MIME 的套件處理器可以使用此資訊,以確定二進制資料應該被內嵌還是作為附件優化。

參數:
data - 表示將被附加的資料。必須為非 null。
elementNamespace - 封裝 base64Binary 資料的元素名稱空間 URI。可以為空但不能為 null。
elementLocalName - 元素的本地名稱。始終是非 null 的有效字元串。
返回:
一個有效的內容 id URI(參見 RFC 2387),它標識包含 data 的附件。如果沒有添加附件,而是應該內嵌在訊息中,則返回 null。
另請參見:
XML-binary Optimized Packaging, Describing Media Content of Binary Data in XML

addMtomAttachment

public abstract String addMtomAttachment(byte[] data,
                                         int offset,
                                         int length,
                                         String mimeType,
                                         String elementNamespace,
                                         String elementLocalName)

將用於優化二進制存儲的二進制 data 作為附件。

由於內容型別未知,所以附件的 MIME 內容型別必須設置為「application/octet-stream」。

elementNamespaceelementLocalName 參數提供包含二進制資料的上下文。基於 MIME 的套件處理器可以使用此資訊,以確定二進制資料應該被內嵌,還是作為附件優化。

參數:
data - 表示將被附加的資料。必須為非 null。實際資料區域由 (data,offset,length) 元組指定。
offset - 要讀取的第一個位元組在陣列中的偏移量;必須為非負且不大於 array.length。
length - 要從給定陣列讀取的位元組數;必須為非負且不大於 array.length。
mimeType - 如果資料具有 JAXB 已知的關聯 MIME 型別,則使用此參數傳遞。如果全部類別型未知,則使用「application/octet-stream」。此參數不可以為 null。
elementNamespace - 封裝 base64Binary 資料的元素名稱空間 URI。可以為空但不能為 null。
elementLocalName - 元素的本地名稱。始終是非 null 的有效字元串。
返回:
包含 data 的附件的內容 id URI(即 cid);如果資料應該內嵌,則返回 null。
另請參見:
addMtomAttachment(DataHandler, String, String)

isXOPPackage

public boolean isXOPPackage()

只讀屬性,如果 JAXB 編組器應該啟用 XOP 創建,則返回 true。

編組過程中此值不得更改。如果此值為 true,則當編組過程遇到適當的二進制資料型別時,將調用 addMtomAttachment(...) 方法。

如果此值為 true 且要編組的 XML 內容違反 Creating XOP Pacakgeshttp://www.w3.org/TR/2005/REC-xop10-20050125/#creating_xop_packages 中的步驟 1,則 Marshaller.marshal() 必須拋出 IllegalStateException。步驟 1 中寫道:“Ensure the Original XML Infoset contains no element information item with a [namespace name] of "http://www.w3.org/2004/08/xop/include" and a [local name] of Include”。

若此方法返回 true,並且在編組過程中至少有一次調用 addMtomAttachment(...) 返回內容 id,則根據 Creating XOP Pacakges 中步驟 5 的描述,基於 MIME 的套件處理器必須使用 application/xop+xml 媒體型別來標記根部分。

返回:
當 MIME 上下文是一個 XOP 套件時,返回 true。

addSwaRefAttachment

public abstract String addSwaRefAttachment(DataHandler data)

將 MIME data 作為附件添加,並返回附件的內容 id(即 cid)。

JAXB 編組過程針對每個歸類別為 {http://ws-i.org/profiles/basic/1.1/xsd}swaRef 的元素/屬性調用此方法。實作此方法的基於 MIME 的套件處理器負責將指定的資料附加到 MIME 附件中,並產生一個內容 id(即 cid),用來唯一地標識基於 MIME 的套件內的附件。

調用程序將返回內容 id(即 cid)插入正在編組的 XML 內容中。

參數:
data - 表示將被附加的資料。必須為非 null。
返回:
必須為用作 cid 的有效 URI。必須滿足 WS-I Attachments Profile Version 1.0 的一致性要求 R2928。

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

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