is new.
@Retention(value=RUNTIME)
@Target(value={FIELD,METHOD})
public @interface 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:
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.
// Mapped code fragment publicclass Foo {@XmlJavaTypeAdapter(QtoPAdapter.class) @XmlElements({ @XmlElement(name="A",type=PX.class), @XmlElement(name="B",type=PY.class) }) Q bar;
@XmlElementWrapper(name="bar") @XmlElements( @XmlElement(name="A", type=Integer.class), @XmlElement(name="B", type=Float.class)}@XmlType abstract class P {...} @XmlType(name="PX") class PX extends P {...} @XmlType(name="PY") class PY extends P {...}
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="PX"/>
type="xs:int"/><xs:element name="B"type="PY"/>
type="xs:float"/></xs:choice> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
Since:
JAXB2.0
,
XmlJavaTypeAdapter
| Required Element Summary | |
|---|---|
| XmlElement [] |
value
Collection of @ XmlElement annotations |
| Element Detail |
|---|
public abstract XmlElement[] value