Module  java.xml.bind

Annotation Type XmlElements



  • @Retention(RUNTIME)
    @Target({字段,METHOD})
    public @interface XmlElements

    多个@ XmlElement注释的容器。 程序元素不允许使用相同类型的多个注释。 因此,此注释作为多个@XmlElements的容器注释,如下所示:

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

    @XmlElements注释可以与以下程序元素一起使用:

    • 一个JavaBean属性
    • 非静态,非瞬态场
    此注释用于注释JavaBean集合属性(例如List)。

    用法

    用法受以下限制:

    • 此注释可以与以下注释一起使用:@ XmlIDREF ,@ XmlElementWrapper
    • 如果在JavaBean属性中也指定了@XmlIDREF,那么每个@ XmlElement.type()都必须包含一个带有@XmlID注释的JavaBean属性。

    有关其他常见信息,请参阅javax.xml.bind.package javadoc中的“Package Specification”。


    示例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
    另请参见:
    XmlElementXmlElementRefXmlElementRefsXmlJavaTypeAdapter
    • Required Element Summary

      Required Elements  
      Modifier and Type Required Element 描述
      XmlElement[] value
      @ XmlElement注释的集合