|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 필수 | 옵션 | 상세 : 요소 | |||||||||
@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형에 맵 할 수 있습니다.
글로벌 요소, 로컬 요소, 또는 로컬 속성을 다음과 같이 익명형에 관련지을 수가 있습니다.
XmlRootElement 로 주석 하는 것에 의해 파생할 수 있습니다. 아래와 같은 예 3 을 참조해 주세요. XML Schema 단순형에의 클래스의 매핑
@XmlValue 주석을 사용해, 클래스를 XML Schema 단순형에 맵 할 수가 있습니다. 추가의 상세 정보나 예에 대해서는,@XmlValue 주석형을 참조해 주세요.
다음의 겉(표)는, XML Schema 복합형 또는 단순형에의 클래스의 매핑을 나타냅니다. 이 표로 사용하는 표기 기호는, 다음과 같습니다.
대상 propOrder 클래스 본체 복합형 단순형 클래스 {} [프로퍼티]+ -> 요소 복합 컨텐츠
xs:all클래스 빈 상태(empty) 이외 [프로퍼티]+ -> 요소 복합 컨텐츠
xs:sequence클래스 X 프로퍼티 없음 -> 요소 복합 컨텐츠
빈 상태(empty)의 sequence클래스 X 1 [ @XmlValue 프로퍼티] &&
[프로퍼티]+ ->속성단순 컨텐츠 클래스 X 1 [ @XmlValue 프로퍼티]&&
프로퍼티 없음 -> 속성단순형
이 주석은, 다음의 주석과 함께 사용할 수 있습니다. 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();
}
}
XmlElement ,
XmlAttribute ,
XmlValue ,
XmlSchema | 임의 요소의 개요 | |
|---|---|
Class |
factoryClass
이 클래스의 인스턴스를 작성하는 인수가 없는 팩토리 메소드를 포함한 클래스입니다. |
String |
factoryMethod
factoryClass factoryClass()로 지정된 클래스내의 인수가 없는 팩토리 메소드입니다. |
String |
name
클래스가 맵 되는 XML Schema 형의 이름입니다. |
String |
namespace
XML Schema 형의 타겟 이름 공간의 이름입니다. |
String [] |
propOrder
클래스가 XML Schema 복합형에 맵 되는 경우, XML Schema 요소의 순서를 지정합니다. |
public abstract String name
public abstract String [] propOrder
propOrder 가 클래스의 매핑에게 주는 영향에 대해서는, 겉(표)를 참조해 주세요.
propOrder 는, 클래스내의 JavaBean 프로퍼티명 리스트입니다. 리스트내의 개개의 이름은, JavaBean 프로퍼티의 Java 식별자명입니다. 리스트내의 JavaBean 프로퍼티의 순서는, JavaBean 프로퍼티이 맵 되는 XML schema 요소의 순서입니다.
XML Schema 요소에 맵 되는 모든 JavaBean 프로퍼티이 리스트 될 필요가 있습니다.
propOrder 에 포함되는 JavaBean 프로퍼티 또는 필드는, 일시적인 것이어 안되어,@XmlTransient 주석이 지정되고 있어 되지 않습니다.
JavaBean 프로퍼티의 디폴트의 순서는,@XmlAccessorOrder 에 의해 결정됩니다.
public abstract String namespace
public abstract Class factoryClass
factoryClass 가 DEFAULT.class 로 factoryMethod 가 「」의 경우, static 팩토리 메소드는 없습니다.
factoryClass 가 DEFAULT.class 로 factoryMethod 가 「」이외의 경우,factoryMethod 가 이 클래스의 static 팩토리 메소드의 이름입니다.
factoryClass 가 DEFAULT.class 이외의 경우,factoryMethod 는 「」에서 만나 안되어,factoryClass 로 지정된 static 팩토리 메소드의 이름이 아니면 안됩니다.
public abstract String factoryMethod
|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 전의 클래스 다음의 클래스 | 프레임 있어 프레임 없음 | |||||||||
| 개요: 필수 | 옵션 | 상세 : 요소 | |||||||||
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.