|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 必需 | 可選 | 詳細資訊: 元素 |
@Retention(value=RUNTIME) @Target(value={FIELD,METHOD}) public @interface XmlIDREF
將 JavaBean 屬性映射到 XML IDREF。
要在 XML 序列化然後反序列化這一過程中保持物件圖形的參考完整性,需要通過使用參考或容器適當地對物件參考進行編組。註釋 @XmlID 和 @XmlIDREF 一起使用時允許通過容器或參考來實作 JavaBean 屬性型別的自定義映射。
用法
@XmlIDREF 註釋能夠與以下程序元素一起使用:有關其他公共訊息,請參閱 javax.xml.bind.package javadoc 中的“套件規範”。
用法受到以下約束的限制:
註:如果集合項型別或屬性的型別(用於非 collection 型別)是 java.lang.Object,則該實例必須包含一個用 @XmlID 屬性註釋的屬性/欄位。
XmlElement
、XmlAttribute
、XmlList
和 XmlElements
。範例:將 JavaBean 屬性映射到 xs:IDREF(即通過參考而不是通過包含)。
//EXAMPLE: Code fragment public class Shipping { @XmlIDREF public Customer getCustomer(); public void setCustomer(Customer customer); .... } <!-- Example: XML Schema fragment --> <xs:complexType name="Shipping"> <xs:complexContent> <xs:sequence> <xs:element name="customer" type="xs:IDREF"/> .... </xs:sequence> </xs:complexContent> </xs:complexType>
範例 2:以下是一個對比容器與參考的完整範例。
// By default, Customer maps to complex type xs:Customer public class Customer { // map JavaBean property type to xs:ID @XmlID public String getCustomerID(); public void setCustomerID(String id); // .... other properties not shown } // By default, Invoice maps to a complex type xs:Invoice public class Invoice { // map by reference @XmlIDREF public Customer getCustomer(); public void setCustomer(Customer customer); // .... other properties not shown here } // By default, Shipping maps to complex type xs:Shipping public class Shipping { // map by reference @XmlIDREF public Customer getCustomer(); public void setCustomer(Customer customer); } // at least one class must reference Customer by containment; // Customer instances won't be marshalled. @XmlElement(name="CustomerData") public class CustomerData { // map reference to Customer by containment by default. public Customer getCustomer(); // maps reference to Shipping by containment by default. public Shipping getShipping(); // maps reference to Invoice by containment by default. public Invoice getInvoice(); } <!-- XML Schema mapping for above code frament --> <xs:complexType name="Invoice"> <xs:complexContent> <xs:sequence> <xs:element name="customer" type="xs:IDREF"/> .... </xs:sequence> </xs:complexContent> </xs:complexType> <xs:complexType name="Shipping"> <xs:complexContent> <xs:sequence> <xs:element name="customer" type="xs:IDREF"/> .... </xs:sequence> </xs:complexContent> </xs:complexType> <xs:complexType name="Customer"> <xs:complexContent> <xs:sequence> .... </xs:sequence> <xs:attribute name="CustomerID" type="xs:ID"/> </xs:complexContent> </xs:complexType> <xs:complexType name="CustomerData"> <xs:complexContent> <xs:sequence> <xs:element name="customer" type="xs:Customer"/> <xs:element name="shipping" type="xs:Shipping"/> <xs:element name="invoice" type="xs:Invoice"/> </xs:sequence> </xs:complexContent> </xs:complexType> <xs:element name"customerData" type="xs:CustomerData"/> <!-- Instance document conforming to the above XML Schema --> <customerData> <customer customerID="Alice"> .... </customer> <shipping customer="Alice"> .... </shipping> <invoice customer="Alice"> .... </invoice> </customerData>
範例 3:將列表映射到 IDREF 型別的重複元素。
// Code fragment public class Shipping { @XmlIDREF @XmlElement(name="Alice") public List customers; } <!-- XML schema fragment --> <xs:complexType name="Shipping"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Alice" type="xs:IDREF"/> </xs:choice> </xs:sequence> </xs:complexType>
範例 4:將列表映射到 IDREF 型別的元素列表。
//Code fragment public class Shipping { @XmlIDREF @XmlElements( @XmlElement(name="Alice", type="Customer.class") @XmlElement(name="John", type="InternationalCustomer.class") public List customers; } <!-- XML Schema fragment --> <xs:complexType name="Shipping"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element name="Alice" type="xs:IDREF"/> <xs:element name="John" type="xs:IDREF"/> </xs:choice> </xs:sequence> </xs:complexType>
XmlID
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 必需 | 可選 | 詳細資訊: 元素 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。