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 . 다만, 이 주석이 열거형으로 사용되는 경우,XmlAccessorOrder 와 XmlAccessorType 은 무시됩니다.

예 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 도 참조해 주세요.