@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.