|
JavaTM Platform Standard Ed. 6 |
|||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 必須 | オプション | 詳細: 要素 | |||||||||
@Retention(value=RUNTIME) @Target(value=TYPE) public @interface XmlType
クラスまたは列挙型を XML Schema 型にマップします。
使用法
@XmlType 注釈は、次のプログラム要素で使用できます。
追加の一般的な情報については、javax.xml.bind.package javadoc の「パッケージの仕様」を参照してください。
クラスを XML Schema 型にマップします。クラスは、プロパティーおよびフィールドで表現される値のデータコンテナです。スキーマ型は、スキーマ型のコンテンツモデル (モデルグループ、属性など) 内のスキーマコンポーネントで表現される値のデータコンテナです。
クラスをマップするには、引数のない public コンストラクタか、引数のない static ファクトリメソッドのいずれかがクラスに含まれる必要があります。static ファクトリメソッドは、factoryMethod() および factoryClass() 注釈要素で指定することができます。非整列化の実行中に、static ファクトリメソッドまたは引数のないコンストラクタは使用され、このクラスのインスタンスが作成されます。両方ある場合、引数のないコンストラクタよりも static ファクトリメソッドが優先されます。
クラスは、XML Schema 複合型か XML Schema 単純型のいずれかにマップされます。XML Schema 型は、クラス内に含まれる JavaBean プロパティーとフィールドのマッピングに基づいて派生します。クラスがマップされるスキーマ型は、名前付きか匿名のいずれにもできます。クラスを @XmlType(name="") で注釈することによって、クラスを匿名スキーマ型にマップできます。
グローバル要素、ローカル要素、またはローカル属性を次のように匿名型に関連付けることができます。
XmlRootElement で注釈することによって派生できます。下記の例 3 を参照してください。 XML Schema 単純型へのクラスのマッピング
@XmlValue 注釈を使用し、クラスを XML Schema 単純型にマップすることができます。追加の詳細情報や例については、@XmlValue 注釈型を参照してください。
次の表は、XML Schema 複合型または単純型へのクラスのマッピングを示します。この表で使用する表記記号は、次のとおりです。
対象 propOrder クラス本体 複合型 単純型 クラス {} [プロパティー]+ -> 要素 複合コンテンツ
xs:allクラス 空以外 [プロパティー]+ -> 要素 複合コンテンツ
xs:sequenceクラス 0 プロパティーなし -> 要素 複合コンテンツ
空の sequenceクラス 0 1 [ @XmlValue プロパティー] &&
[プロパティー]+ ->属性単純コンテンツ クラス 0 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:all>
</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:sequence>
</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>
@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);
}
@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 スキーマ要素の順序です。
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 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。