Spec-Zone .ru
спецификации, руководства, описания, API
|
@Retention(value=RUNTIME) @Target(value={FIELD,METHOD}) public @interface XmlIDREF
Отображает свойство JavaBean на XML IDREF.
Чтобы сохранить ссылочную целостность графа объектов через сериализацию XML, сопровождаемую десериализацией XML, требует, чтобы ссылка на объект была упорядочена по ссылке или включению соответственно. Аннотации @XmlID и @XmlIDREF вместе позволяют специализированное отображение типа свойства JavaBean включением или ссылкой.
Использование
Аннотация @XmlIDREF может использоваться со следующими элементами программы:См. "Спецификацию Пакета" в javax.xml.bind.package javadoc для дополнительной общей информации.
Использование подвергается следующим ограничениям:
Отметьте: Если тип изделия набора или тип свойства (для не тип набора) являются java.lang. Объект, тогда экземпляр должен содержать свойство/поле, аннотируемое атрибутом @XmlID.
XmlElement
, XmlAttribute
, XmlList
, и XmlElements
.Пример: свойство Map a 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
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.