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