アノテーション型 XmlElements


  • @RetentionSE(RUNTIMESE)
    @TargetSE({FIELDSE,METHODSE})
    public @interface XmlElements

    複数の @XmlElement アノテーションのコンテナー。プログラム要素に同じ型の複数のアノテーションを付けることはできません。このアノテーションは、次のように複数の @XmlElements のコンテナーアノテーションとして機能します。

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

    @XmlElements アノテーションは、次のプログラム要素で使用できます。

    • JavaBean プロパティ
    • 非静的、非一時的なフィールド
    このアノテーションは、JavaBean コレクションプロパティ(リストなど)にアノテーションを付けることを目的としています。

    使用方法

    使用箇所には、次の制約があります。

    • このアノテーションは、次のアノテーションとともに使用できます: @XmlIDREF、@XmlElementWrapper
    • @XmlIDREF が JavaBean プロパティでも指定されている場合、各 @XmlElement.type() には、@XmlID アノテーションが付けられた JavaBean プロパティが含まれている必要があります。

    追加の共通情報については、jakarta.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>
     
    導入:
    1.6、JAXB 2.0
    作成者:
    • Kohsuke Kawaguchi, Sun Microsystems, Inc.
    • Sekhar Vajjhala, Sun Microsystems, Inc.
    関連事項:
    XmlElement, XmlElementRef, XmlElementRefs, XmlJavaTypeAdapter
    • 必須定数のサマリー

      必須要素  
      修飾子と型 必須要素 説明
      XmlElement[]value
      @XmlElement アノテーションのコレクション