Home » xml-commons-external-1.4.01-src » javax » xml » bind » annotation » [javadoc | source]
javax.xml.bind.annotation
public class: XmlElements [javadoc | source]
javax.xml.bind.annotation.XmlElements

A container for multiple @XmlElement annotations. Multiple annotations of the same type are not allowed on a program element. This annotation therefore serves as a container annotation for multiple @XmlElements as follows:

@XmlElements({ @XmlElement(...),@XmlElement(...) })

The @XmlElements annnotation can be used with the following program elements:

This annotation is intended for annotation a JavaBean collection property (e.g. List).

Usage

The usage is subject to the following constraints:

See "Package Specification" in javax.xml.bind.package javadoc for additional common information.


Example 1: Map to a list of elements


   // Mapped code fragment
   public class Foo {
       @XmlElements(
           @XmlElement(name="A", type=Integer.class),
           @XmlElement(name="B", type=Float.class)
        }
        public List items;
   }

   <!-- XML Representation for a List of {1,2.5}
           XML output is not wrapped using another element -->
   ...
    1 
    2.5 
   ...

   <!-- XML Schema fragment -->
   <xs:complexType name="Foo">
     <xs:sequence>
       <xs:choice minOccurs="0" maxOccurs="unbounded">
         <xs:element name="A" type="xs:int"/>
         <xs:element name="B" type="xs:float"/>
       <xs:choice>
     </xs:sequence>
   </xs:complexType>

Example 2: Map to a list of elements wrapped with another element


   // Mapped code fragment
   public class Foo {
       @XmlElementWrapper(name="bar")
       @XmlElements(
           @XmlElement(name="A", type=Integer.class),
           @XmlElement(name="B", type=Float.class)
       }
       public List items;
   }

   <!-- XML Schema fragment -->
   <xs:complexType name="Foo">
     <xs:sequence>
       <xs:element name="bar">
         <xs:complexType>
           <xs:choice minOccurs="0" maxOccurs="unbounded">
             <xs:element name="A" type="xs:int"/>
             <xs:element name="B" type="xs:float"/>
           </xs:choice>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>

Example 3: Change element name based on type using an adapter.

   class Foo {
      @XmlJavaTypeAdapter(QtoPAdapter.class)
      @XmlElements({
          @XmlElement(name="A",type=PX.class),
          @XmlElement(name="B",type=PY.class)
      })
      Q bar;
   }

   @XmlType abstract class P {...}
   @XmlType(name="PX") class PX extends P {...}
   @XmlType(name="PY") class PY extends P {...}

   <!-- XML Schema fragment -->
   <xs:complexType name="Foo">
     <xs:sequence>
       <xs:element name="bar">
         <xs:complexType>
           <xs:choice minOccurs="0" maxOccurs="unbounded">
             <xs:element name="A" type="PX"/>
             <xs:element name="B" type="PY"/>
           </xs:choice>
         </xs:complexType>
       </xs:element>
     </xs:sequence>
   </xs:complexType>
Method from javax.xml.bind.annotation.XmlElements Summary:
value
Method from javax.xml.bind.annotation.XmlElements Detail:
 XmlElement[] value()