-
@Retention(RUNTIME) @Target(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を参照してください。 - ローカル要素: @XmlType(name="")で注釈されたクラスを参照し、匿名型に関連付けられた要素にマップされるJavaBeanプロパティ。 下記の例4を参照してください。
- 属性: @XmlType(name="")で注釈されたクラスを参照し、匿名型に関連付けられた属性にマップされるJavaBeanプロパティ。 下記の例5を参照してください。
- クラスが
@XmlType(name="")
で注釈されている場合、匿名型にマップされます。それ以外の場合、クラス名は複合型名にマップされます。XmlName()
注釈要素を使用し、名前をカスタマイズすることもできます。 - 要素にマップされるプロパティとフィールドは、複合型内のコンテンツ・モデルにマップされます。
propOrder()
注釈要素を使用して、コンテンツ・モデルをxs:all
またはxs:sequence
にカスタマイズすることもできます。 これは、xs:sequence
にXML要素の順序を指定するために使用されます。 - プロパティおよびフィールドを複合型内の属性にマップできます。
-
namespace()
注釈要素を使用して、XML Schema型のtargetnamespaceをカスタマイズできます。
XML Schema単純型へのクラスのマッピング
@XmlValue
注釈を使用して、クラスをXML Schema単純型にマップできます。 追加の詳細情報や例については、@XmlValue
注釈型を参照してください。次の表は、XML Schema複合型または単純型へのクラスのマッピングを示します。 この表で使用する表記記号は、次のとおりです。
- -> : マッピングを表す
- [x]+ : xの1回以上の出現
- [
@XmlValue
プロパティ]:@XmlValue
で注釈されたJavaBeanプロパティ - X : 関係しない
ターゲット propOrder クラス本体 複合型 単純型 クラス {} [プロパティ]+ ->要素 複合コンテンツ
xs:allクラス 空以外 [プロパティ]+ ->要素 複合コンテンツ
xs:sequenceクラス X プロパティなし ->要素 複合コンテンツ
空のsequenceクラス X 1 [ @XmlValue
プロパティ] & &
[property] + ->属性単純コンテンツ クラス X 1 [ @XmlValue
プロパティ] & &
プロパティなし ->属性単純型 列挙型のマッピング
列挙型を、列挙ファセットを持つXMLスキーマ単純型にマップします。 注釈要素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: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(); } }
- 導入されたバージョン:
- 1.6, JAXB 2.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
String name
クラスがマップされるXML Schema型の名前です。- デフォルト:
- 「##default」
-
-
-
propOrder
String[] propOrder
クラスがXML Schema複合型にマップされる場合、XML Schema要素の順序を指定します。propOrderがクラスのマッピングに与える影響については、表を参照してください。
propOrderは、クラス内のJavaBeanプロパティ名リストです。 リスト内の個々の名前は、JavaBeanプロパティのJava識別子名です。 リスト内のJavaBeanプロパティの順序は、JavaBeanプロパティがマップされるXMLスキーマ要素の順序です。
XML Schema要素にマップされるすべてのJavaBeanプロパティがリストされる必要があります。
propOrderに含まれるJavaBeanプロパティまたはフィールドは、一時的なものであってはならず、
@XmlTransient
注釈が指定されていてはいけません。JavaBeanプロパティのデフォルトの順序は、@
XmlAccessorOrder
によって決定されます。- デフォルト:
- {""}
-
-
-
namespace
String namespace
XML Schema型のターゲット名前空間の名前です。 デフォルトでは、クラスを含むパッケージがマップされるターゲット名前空間です。- デフォルト:
- 「##default」
-
-
-
factoryClass
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
String factoryMethod
factoryClass
factoryClass()で指定されたクラス内の引数のないファクトリ・メソッドの名前です。- デフォルト:
- ""
-
-