@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
JAXBElement o =
(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 createPeaFoo(String s);
@XmlElementDecl(scope=Pea.class,name="bar")
JAXBElement createPeaBar(String s);
@XmlElementDecl(name="foo")
JAXBElement createFoo(Integer i);
}
スコープがなければ、createFooとcreatePeaFooは両方とも同じローカル名「foo」を持つXMLスキーマ要素にマップされるため、不明瞭になります。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, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。