-
@Retention(RUNTIME) @Target(METHOD) public @interface XmlElementDecl
ファクトリ・メソッドをXML要素にマップします。使用法
この注釈は、XMLスキーマ要素宣言と、その要素宣言を表現するJAXBElementインスタンスを返す要素ファクトリ・メソッドの間のマッピングを作成します。 通常、スキーマから、要素宣言のターゲット名前空間のバインディングを表現するJavaパッケージ内のObjectFactoryクラス内に、要素ファクトリ・メソッドが生成(および注釈)されます。 そのため、注釈の構文上では@XmlElementDeclは任意のメソッドで使用可能ですが、セマンティックス的にはこれの使用は要素ファクトリ・メソッドの注釈に限定されます。 使用には次の制約があります。- @XmlElementDeclで注釈される要素ファクトリ・メソッドを含むクラスを、
XmlRegistry
でマークする必要があります。 - 要素ファクトリ・メソッドは、
Object
に割当て可能な1つのパラメータを取る必要があります。
例1: ファクトリ・メソッドへの注釈
// Example: code fragment @XmlRegistry class ObjectFactory { @XmlElementDecl(name="foo") JAXBElement<String> createFoo(String s) { ... } }
<!-- XML input --> <foo>string</foo> // Example: code fragment corresponding to XML input JAXBElement<String> o = (JAXBElement<String>)unmarshaller.unmarshal(aboveDocument); // print JAXBElement instance to show values System.out.println(o.getName()); // prints "{}foo" System.out.println(o.getValue()); // prints "string" System.out.println(o.getValue().getClass()); // prints "java.lang.String" <!-- Example: XML schema definition --> <xs:element name="foo" type="xs:string"/>
例2: ローカル・スコープを持たない要素宣言
次の例は、スキーマ派生コード内の要素宣言のバインディングにおけるスコープ注釈パラメータの使用を示します。
次の例は、将来このjavadocの改訂版で置き換えられる可能性があります。
<!-- Example: XML schema definition --> <xs:schema> <xs:complexType name="pea"> <xs:choice maxOccurs="unbounded"> <xs:element name="foo" type="xs:string"/> <xs:element name="bar" type="xs:string"/> </xs:choice> </xs:complexType> <xs:element name="foo" type="xs:int"/> </xs:schema>
// Example: expected default binding class Pea { @XmlElementRefs({ @XmlElementRef(name="foo",type=JAXBElement.class) @XmlElementRef(name="bar",type=JAXBElement.class) }) List<JAXBElement<String>> fooOrBar; } @XmlRegistry class ObjectFactory { @XmlElementDecl(scope=Pea.class,name="foo") JAXBElement<String> createPeaFoo(String s); @XmlElementDecl(scope=Pea.class,name="bar") JAXBElement<String> createPeaBar(String s); @XmlElementDecl(name="foo") JAXBElement<Integer> createFoo(Integer i); }
スコープがなければ、createFooとcreatePeaFooは両方とも同じローカル名「foo」を持つXMLスキーマ要素にマップされるため、不明瞭になります。- 導入されたバージョン:
- 1.6, JAXB 2.0
- 関連項目:
XmlRegistry
- @XmlElementDeclで注釈される要素ファクトリ・メソッドを含むクラスを、
-
-
オプション要素のサマリー
省略可能な要素 修飾子と型 オプション要素 説明 String
defaultValue
この要素のデフォルト値です。String
namespace
XML要素の名前空間名です。Class
scope
マッピングのスコープです。String
substitutionHeadName
置換グループの先頭要素のXMLローカル名です。String
substitutionHeadNamespace
置換グループの先頭XML要素の名前空間名です。
-
-
-
要素の詳細
-
name
String name
XML要素のローカル名です。レビューアへの注意: デフォルト名はありません。注釈はファクトリ・メソッドに対するものであるため、メソッド名をファクトリ・メソッド名から派生できるか明らかでありません。
- 関連項目:
namespace()
-
-
-
scope
Class scope
マッピングのスコープです。これが
XmlElementDecl.GLOBAL
以外の場合、この要素宣言マッピングは指定されたクラス内でのみアクティブになります。- デフォルト:
- javax.xml.bind.annotation.XmlElementDecl.GLOBAL.class
-
-
-
substitutionHeadNamespace
String substitutionHeadNamespace
置換グループの先頭XML要素の名前空間名です。これは、ローカル名が
substitutionHeadName()
によって指定されるXML要素の名前空間名を指定します。substitutionHeadName()
がの場合、この値は##defaultにしかできません。substitutionHeadName()
の値がの場合、この要素は置換グループの一部でないため、値は無視されます。substitutionHeadName()
がでなく、値が##defaultの場合、名前空間名は、XmlRegistry
でマークされたこれを含むクラスのパッケージがマップされる名前空間名です。substitutionHeadName()
がでなく、値が##defaultでない場合、値は名前空間名です。- 関連項目:
substitutionHeadName()
- デフォルト:
- 「##default」
-
-
-
substitutionHeadName
String substitutionHeadName
置換グループの先頭要素のXMLローカル名です。値が「」の場合、この要素は置換グループの一部ではありません。
- デフォルト:
- ""
-
-
-
defaultValue
String defaultValue
この要素のデフォルト値です。この注釈要素のデフォルトとして指定されている
' '
値は、nullの代わりに使用して実装が非デフォルト値の状態を認識できるようにする経済的な代替品です。- デフォルト:
- 「\u0000」
-
-