アノテーション型 XmlElementDecl


  • @RetentionSE(RUNTIMESE)
    @TargetSE(METHODSE)
    public @interface XmlElementDecl
    ファクトリメソッドを XML 要素にマップします。

    使用方法

    アノテーションは、XML スキーマ要素宣言と、要素宣言を表す JAXBElement インスタンスを返す要素ファクトリメソッドとの間のマッピングを作成します。通常、要素ファクトリメソッドは、スキーマから Java パッケージの ObjectFactory クラスに生成(およびアノテーション付け)され、要素宣言のターゲット名前空間のバインディングを表します。アノテーション構文では @XmlElementDecl を任意のメソッドで使用できますが、意味的には、その使用は要素ファクトリメソッドのアノテーションに制限されます。使用箇所には、次の制約があります。
    • @XmlElementDecl アノテーションが付けられた要素ファクトリメソッドを含むクラスは、XmlRegistry でマークする必要があります。
    • 要素ファクトリメソッドは、ObjectSE に割り当て可能な 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
    • 要素の詳細

      • name

        StringSE name
        XML 要素のローカル名。

        レビューアーへの注意: デフォルト名はありません。アノテーションはファクトリメソッド上にあるため、メソッド名がファクトリメソッド名から派生できるかどうかは明確ではありません。

        関連事項:
        namespace()
      • scope

        ClassSE<?> scope
        マッピングの範囲。

        これが XmlElementDecl.GLOBAL でない場合、この要素宣言マッピングは指定されたクラス内でのみアクティブになります。

        デフォルト:
        jakarta.xml.bind.annotation.XmlElementDecl.GLOBAL.class
      • namespace

        StringSE namespace
        XML 要素の名前空間名。

        値が "## default" の場合、値はこのファクトリメソッドを含むクラスのパッケージの名前空間名です。

        関連事項:
        name()
        デフォルト:
        "##default"
      • substitutionHeadNamespace

        StringSE substitutionHeadNamespace
        置換グループのヘッド XML 要素の名前空間名。

        これは、ローカル名が substitutionHeadName() によって指定されている XML 要素の名前空間名を指定します。

        susbtitutionHeadName() が "" の場合、この値は "## default" のみになります。ただし、susbstitutionHeadName() の値が "" の場合、この要素はサスビテーショングループの一部ではないため、値は無視されます。

        susbtitutionHeadName() が "" ではなく、値が "## default" の場合、名前空間名は、XmlRegistry でマークされた包含クラスのパッケージがマップされる名前空間名です。

        susbtitutionHeadName() が "" でなく、値が "## default" でない場合、値は名前空間名です。

        関連事項:
        substitutionHeadName()
        デフォルト:
        "##default"
      • substitutionHeadName

        StringSE substitutionHeadName
        置換グループの head 要素の XML ローカル名。

        値が "" の場合、この要素は置換グループの一部ではありません。

        関連事項:
        substitutionHeadNamespace()
        デフォルト:
        ""
      • defaultValue

        StringSE defaultValue
        この要素のデフォルト値。

        ''
        このアノテーション要素のデフォルトとして指定された値は、実装が「デフォルト値なし」状態を認識できるようにするために、null の代わりとして使用されます。
        デフォルト:
        "\u0000"