JavaTM Platform
Standard Ed. 6

javax.xml.bind.annotation
주석형 XmlType



@Retention (value =RUNTIME )
@Target (value =TYPE )
public @interface XmlType

클래스 또는 열거형을 XML Schema 형에 맵 합니다.

사용법

@XmlType 주석은, 다음의 프로그램 요소로 사용할 수 있습니다.

추가의 일반적인 정보에 대해서는, javax.xml.bind.package javadoc 의 「패키지의 스펙」을 참조해 주세요.

클래스의 매핑

클래스를 XML Schema 형에 맵 합니다. 클래스는, 프로퍼티 및 필드에서 표현되는 값의 데이터 컨테이너입니다. schema형은, schema형의 컨텐츠 모델 (모델 그룹, 속성 등) 내의 schema 컴퍼넌트로 표현되는 값의 데이터 컨테이너입니다.

클래스를 맵 하려면 , 인수가 없는 public 생성자 인가, 인수가 없는 static 팩토리 메소드중 한쪽이 클래스에 포함될 필요가 있습니다. static 팩토리 메소드는,factoryMethod()factoryClass() 주석 요소로 지정할 수가 있습니다. 비정렬화의 실행중에, static 팩토리 메소드 또는 인수가 없는 생성자 은 사용되어 이 클래스의 인스턴스가 작성됩니다. 양쪽 모두 있는 경우, 인수가 없는 생성자 보다 static 팩토리 메소드가 우선됩니다.

클래스는, XML Schema 복합형이나 XML Schema 단순형의 어느 쪽인가에 맵 됩니다. XML Schema 형은, 클래스내에 포함되는 JavaBean 프로퍼티과 필드의 매핑에 근거해 파생합니다. 클래스가 맵 되는 schema형은, 이름 첨부나 익명의 어느 것에도 할 수 있습니다. 클래스를 @XmlType(name="") 로 주석 하는 것에 의해, 클래스를 익명 schema형에 맵 할 수 있습니다.

글로벌 요소, 로컬 요소, 또는 로컬 속성을 다음과 같이 익명형에 관련지을 수가 있습니다.

XML Schema 복합형에의 매핑

XML Schema 단순형에의 클래스의 매핑

@XmlValue 주석을 사용해, 클래스를 XML Schema 단순형에 맵 할 수가 있습니다. 추가의 상세 정보나 예에 대해서는,@XmlValue 주석형을 참조해 주세요.

다음의 겉(표)는, XML Schema 복합형 또는 단순형에의 클래스의 매핑을 나타냅니다. 이 표로 사용하는 표기 기호는, 다음과 같습니다.

대상 propOrder 클래스 본체 복합형 단순형
클래스 {} [프로퍼티]+ -> 요소 복합 컨텐츠
xs:all
클래스 빈 상태(empty) 이외 [프로퍼티]+ -> 요소 복합 컨텐츠
xs:sequence
클래스 X 프로퍼티 없음 -> 요소 복합 컨텐츠
빈 상태(empty)의 sequence
클래스 X 1 [ @XmlValue 프로퍼티] &&
[프로퍼티]+ ->속성
단순 컨텐츠
클래스 X 1 [ @XmlValue 프로퍼티]&&
프로퍼티 없음 -> 속성
단순형

열거형의 매핑

열거형을, 열거 파셋트를 가지는 XML schema 단순형에 맵 합니다. 다음의 주석 요소는 의미가 없기 때문에, 무시됩니다. propOrder(),factoryMethod(),factoryClass().

다른 주석과의 병용

이 주석은, 다음의 주석과 함께 사용할 수 있습니다. XmlRootElement ,XmlAccessorOrder ,XmlAccessorType ,XmlEnum . 다만, 이 주석이 열거형으로 사용되는 경우,XmlAccessorOrderXmlAccessorType 은 무시됩니다.

예 1: JavaBean 프로퍼티의 순서를 커스터마이즈 하는 xs:sequence 를 사용한 복합형에 클래스를 맵 합니다.

   @XmlType(propOrder={"street", "city" , "state", "zip", "name" })
   public class USAddress {
     String getName() {..};
     void setName(String) {..};
 
     String getStreet() {..};
     void setStreet(String) {..};

     String getCity() {..}; 
     void setCity(String) {..};
 
     String getState() {..};
     void setState(String) {..};

     java.math.BigDecimal getZip() {..};
     void setZip(java.math.BigDecimal) {..};
   }

   <! -- XML Schema mapping for USAddress -->
   <xs:complexType name="USAddress">
     <xs:sequence>
       <xs:element name="street" type="xs:string"/>
       <xs:element name="city" type="xs:string"/>
       <xs:element name="state" type="xs:string"/>
       <xs:element name="zip" type="xs:decimal"/>
       <xs:element name="name" type="xs:string"/>
     </xs:sequence>
   </xs:complexType> 
 

예 2: xs:all 를 사용한 복합형에 클래스를 맵 합니다.

 @XmlType(propOrder={})
 public class USAddress { ...}
 
 <! -- XML Schema mapping for USAddress -->
 <xs:complexType name="USAddress">
   <xs:all>
     <xs:element name="name" type="xs:string"/>
     <xs:element name="street" type="xs:string"/>
     <xs:element name="city" type="xs:string"/>
     <xs:element name="state" type="xs:string"/>
     <xs:element name="zip" type="xs:decimal"/>
   </xs:all>
 </xs:complexType>

예 3: 익명형을 사용한 글로벌 요소에 클래스를 맵 합니다.

   @XmlRootElement
   @XmlType(name="")
   public class USAddress { ...}

   <! -- XML Schema mapping for USAddress -->
   <xs:element name="USAddress">
     <xs:complexType>
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:element name="street" type="xs:string"/>
         <xs:element name="city" type="xs:string"/>
         <xs:element name="state" type="xs:string"/>
         <xs:element name="zip" type="xs:decimal"/>
       </xs:sequence>
     </xs:complexType>
   </xs:element>
 

예 4: 익명형을 사용한 로컬 요소에 프로퍼티을 맵 합니다.

   //Example:Code fragment
   public class Invoice {
       USAddress addr;
           ...
       }

   @XmlType(name="")
   public class USAddress { ... }
   } 

   <! -- XML Schema mapping for USAddress -->
   <xs:complexType name="Invoice">
     <xs:sequence>
       <xs:element name="addr">
         <xs:complexType>
           <xs:element name="name", type="xs:string"/>
           <xs:element name="city", type="xs:string"/>
           <xs:element name="city" type="xs:string"/>
           <xs:element name="state" type="xs:string"/>
           <xs:element name="zip" type="xs:decimal"/>
         </xs:complexType>
       ...
     </xs:sequence>
   </xs:complexType>
 

예 5: 익명형을 사용한 속성에 프로퍼티을 맵 합니다.


     //Example:Code fragment
     public class Item {
         public String name;
         @XmlAttribute
         public USPrice price;
     }
    
     // map class to anonymous simple type.  
     @XmlType(name="")
     public class USPrice {
         @XmlValue
         public java.math.BigDecimal price;
     }

     <! -- Example:XML Schema fragment -->
     <xs:complexType name="Item">
       <xs:sequence>
         <xs:element name="name" type="xs:string"/>
         <xs:attribute name="price">
           <xs:simpleType>
             <xs:restriction base="xs:decimal"/>
           </xs:simpleType>
         </xs:attribute>
       </xs:sequence>
     </xs:complexType>
 

예 6: factoryClass 와 factoryMethod 를 정의합니다.

 
      @XmlType(name="USAddressType", factoryClass=USAddressFactory.class,
      factoryMethod="getUSAddress")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

      public USAddress(String name, String street, String city, 
          String state, int zip) {
          this.name = name;
          this.street = street;
          this.city = city;
          this.state = state;
          this.zip = zip;
      }
  }

  public class USAddressFactory {
      public static USAddress getUSAddress(){
       return new USAddress("Mark Baker", "23 Elm St", 
          "Dayton", "OH", 90952);
  }

 

예 7: factoryMethod 를 정의해, 디폴트의 factoryClass 를 사용합니다.

      @XmlType(name="USAddressType", factoryMethod="getNewInstance")
      public class USAddress {

          private String city;
          private String name;
          private String state;
          private String street;
          private int    zip;

          private USAddress() {}

          public static USAddress getNewInstance(){
              return new USAddress();
          }
      }
 

도입된 버젼:
JAXB2. 0
관련 항목:
XmlElement , XmlAttribute , XmlValue , XmlSchema

임의 요소의 개요
 Class factoryClass
          이 클래스의 인스턴스를 작성하는 인수가 없는 팩토리 메소드를 포함한 클래스입니다.
 String factoryMethod
          factoryClass factoryClass()로 지정된 클래스내의 인수가 없는 팩토리 메소드입니다.
 String name
          클래스가 맵 되는 XML Schema 형의 이름입니다.
 String namespace
          XML Schema 형의 타겟 이름 공간의 이름입니다.
 String [] propOrder
          클래스가 XML Schema 복합형에 맵 되는 경우, XML Schema 요소의 순서를 지정합니다.
 

name

public abstract String  name
클래스가 맵 되는 XML Schema 형의 이름입니다.

디폴트:
"##default"

propOrder

public abstract String [] propOrder
클래스가 XML Schema 복합형에 맵 되는 경우, XML Schema 요소의 순서를 지정합니다.

propOrder 가 클래스의 매핑에게 주는 영향에 대해서는, 겉(표)를 참조해 주세요.

propOrder 는, 클래스내의 JavaBean 프로퍼티명 리스트입니다. 리스트내의 개개의 이름은, JavaBean 프로퍼티의 Java 식별자명입니다. 리스트내의 JavaBean 프로퍼티의 순서는, JavaBean 프로퍼티이 맵 되는 XML schema 요소의 순서입니다.

XML Schema 요소에 맵 되는 모든 JavaBean 프로퍼티이 리스트 될 필요가 있습니다.

propOrder 에 포함되는 JavaBean 프로퍼티 또는 필드는, 일시적인 것이어 안되어,@XmlTransient 주석이 지정되고 있어 되지 않습니다.

JavaBean 프로퍼티의 디폴트의 순서는,@XmlAccessorOrder 에 의해 결정됩니다.

디폴트:
""

namespace

public abstract String  namespace
XML Schema 형의 타겟 이름 공간의 이름입니다. 디폴트에서는, 클래스를 포함한 패키지가 맵 되는 타겟 이름 공간입니다.

디폴트:
"##default"

factoryClass

public abstract Class  factoryClass
이 클래스의 인스턴스를 작성하는 인수가 없는 팩토리 메소드를 포함한 클래스입니다. 디폴트는 이 클래스입니다.

factoryClass 가 DEFAULT.class 로 factoryMethod 가 「」의 경우, static 팩토리 메소드는 없습니다.

factoryClass 가 DEFAULT.class 로 factoryMethod 가 「」이외의 경우,factoryMethod 가 이 클래스의 static 팩토리 메소드의 이름입니다.

factoryClass 가 DEFAULT.class 이외의 경우,factoryMethod 는 「」에서 만나 안되어,factoryClass 로 지정된 static 팩토리 메소드의 이름이 아니면 안됩니다.

디폴트:
javax.xml.bind.annotation.XmlType.DEFAULT.class

factoryMethod

public abstract String  factoryMethod
factoryClass factoryClass()로 지정된 클래스내의 인수가 없는 팩토리 메소드입니다.

디폴트:
""

JavaTM Platform
Standard Ed. 6

버그의 보고와 기능의 요청
한층 더 자세한 API 레퍼런스 및 개발자 문서에 대해서는,Java SE 개발자용 문서를 참조해 주세요. 개발자전용의 상세한 해설, 개념의 개요, 용어의 정의, 버그의 회피책, 및 코드 실례가 포함되어 있습니다.

Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.