@Retention(value=RUNTIME) @Target(value=METHOD) public @interface XmlElementDecl
使用法
この注釈は、XMLスキーマ要素宣言と、その要素宣言を表現するJAXBElementインスタンスを返す要素ファクトリ・メソッドの間のマッピングを作成します。通常、スキーマから、要素宣言のターゲット名前空間のバインディングを表現するJavaパッケージ内のObjectFactoryクラス内に、要素ファクトリ・メソッドが生成(および注釈)されます。そのため、注釈の構文上では@XmlElementDeclは任意のメソッドで使用可能ですが、セマンティックス的にはこれの使用は要素ファクトリ・メソッドの注釈に限定されます。使用には次の制約があります。XmlRegistry
でマークする必要があります。 Object
に割当て可能な1つのパラメータを取る必要があります。例1: ファクトリ・メソッドへの注釈
// Example: code fragment @XmlRegistry class ObjectFactory { @XmlElementDecl(name="foo") JAXBElement<String> createFoo(String s) { ... } }
<!-- XML input --> <foo>string // Example: code fragment corresponding to XML input JAXBElemento = (JAXBElement )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スコープがなければ、createFooとcreatePeaFooは両方とも同じローカル名「foo」を持つXMLスキーマ要素にマップされるため、不明瞭になります。createPeaFoo(String s); @XmlElementDecl(scope=Pea.class,name="bar") JAXBElement createPeaBar(String s); @XmlElementDecl(name="foo") JAXBElement createFoo(Integer i); }
XmlRegistry
修飾子と型 | 省略可能な要素と説明 |
---|---|
String |
defaultValue
この要素のデフォルト値です。
|
String |
namespace
XML要素の名前空間名です。
|
Class |
scope
マッピングのスコープです。
|
String |
substitutionHeadName
置換グループの先頭要素のXMLローカル名です。
|
String |
substitutionHeadNamespace
置換グループの先頭XML要素の名前空間名です。
|
public abstract String name
レビューアへの注意: デフォルト名はありません。注釈はファクトリ・メソッドに対するものであるため、メソッド名をファクトリ・メソッド名から派生できるか明らかでありません。
namespace()
public abstract Class scope
これがXmlElementDecl.GLOBAL
以外の場合、この要素宣言マッピングは指定されたクラス内でのみアクティブになります。
public abstract String substitutionHeadNamespace
これは、ローカル名がsubstitutionHeadName()によって指定されるXML要素の名前空間名を指定します。
substitutionHeadName()が「」の場合、この値は「##default」にしかできません。substitutionHeadName()の値が「」の場合、この要素は置換グループの一部でないため、値は無視されます。
substitutionHeadName()が「」でなく、値が「##default」の場合、名前空間名は、XmlRegistry
でマークされたこれを含むクラスのパッケージがマップされる名前空間名です。
substitutionHeadName()が「」でなく、値が「##default」でない場合、値は名前空間名です。
substitutionHeadName()
public abstract String substitutionHeadName
値が「」の場合、この要素は置換グループの一部ではありません。
public abstract String defaultValue
この注釈要素のデフォルトとして指定されている
' '値は、nullの代わりに使用して実装が非デフォルト値の状態を認識できるようにする経済的な代替品です。
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.