Package javax.xml.bind.annotation
Annotation Type XmlElements
- 
 @Retention(RUNTIME) @Target({FIELD,METHOD}) public @interface XmlElementsA container for multiple @ XmlElementannotations. 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 @XmlElementsannotation can be used with the following program elements:- a JavaBean property
- non static, non transient field
 Usage The usage is subject to the following constraints: -  This annotation can be used with the following
        annotations: @XmlIDREF, @XmlElementWrapper.
-  If @XmlIDREF is also specified on the JavaBean property,
        then each @XmlElement.type() must contain a JavaBean
        property annotated with @XmlID.
 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 --> ... <A> 1 </A> <B> 2.5 </B> ... <!-- 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>- Since:
- 1.6, JAXB 2.0
- Author:
- Kohsuke Kawaguchi, Sun Microsystems, Inc.
- Sekhar Vajjhala, Sun Microsystems, Inc.
 
- See Also:
- XmlElement,- XmlElementRef,- XmlElementRefs,- XmlJavaTypeAdapter
 
- 
- 
Required Element SummaryRequired Elements Modifier and Type Required Element Description XmlElement[]valueCollection of @XmlElementannotations
 
- 
- 
- 
Element Detail- 
valueXmlElement[] value Collection of @XmlElementannotations
 
- 
 
-