Тип аннотации XmlElements
@Retention(value=RUNTIME)
@Target(value={FIELD,METHOD})
public @interface XmlElements Контейнер для нескольких аннотаций @XmlElement. Несколько аннотаций одного типа не допускаются для одного элемента программы. Эта аннотация, следовательно, служит контейнерной аннотацией для нескольких аннотаций @XmlElements следующим образом:
@XmlElements({ @XmlElement(...),@XmlElement(...) }) Аннотация @XmlElements может использоваться с следующими элементами программы:
- свойство JavaBean
- нестатическое, не транзитивное поле
Использование
Использование ограничено следующими условиями:
- Эта аннотация может использоваться с следующими аннотациями: @
XmlIDREF, @XmlElementWrapper. - Если на свойстве JavaBean также указана @XmlIDREF, то каждый @XmlElement.type() должен содержать свойство JavaBean, аннотированное с
@XmlID.
См. "Спецификация пакета" в javax.xml.bind.package javadoc для дополнительной общей информации.
Пример 1: Сопоставление со списком элементов
// 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> Пример 2: Сопоставление со списком элементов, обернутых другим элементом
// 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> Пример 3: Изменение имени элемента в зависимости от типа с использованием адаптера.
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>
- С момента:
- JAXB2.0
- См. также:
-
XmlElement,XmlElementRef,XmlElementRefs,XmlJavaTypeAdapter
Требуемые элементы
| Модификатор и тип | Требуемый элемент и описание |
|---|---|
XmlElement[] |
value Коллекция аннотаций @ |
© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.