@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クラス X プロパティなし ->要素 複合コンテンツ
空の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: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>
例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スキーマ要素の順序です。
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
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.