Spec-Zone.ru › OpenJDK 8

Тип аннотации XmlElements


@Retention(value=RUNTIME)
 @Target(value={FIELD,METHOD})
public @interface XmlElements

Контейнер для нескольких аннотаций @XmlElement. Несколько аннотаций одного типа не допускаются для одного элемента программы. Эта аннотация, следовательно, служит контейнерной аннотацией для нескольких аннотаций @XmlElements следующим образом:

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

Аннотация @XmlElements может использоваться с следующими элементами программы:

  • свойство JavaBean
  • нестатическое, не транзитивное поле
Эта аннотация предназначена для аннотирования свойства коллекции JavaBean (например, List).

Использование

Использование ограничено следующими условиями:

  • Эта аннотация может использоваться с следующими аннотациями: @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

Коллекция аннотаций @XmlElement

Элементы

value

public abstract XmlElement[] value

Коллекция аннотаций @XmlElement

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API