モジュール java.xml.bind
パッケージ javax.xml.bind.annotation

注釈型XmlElementDecl



  • @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
    • 必須要素のサマリー

      必須要素 
      修飾子と型 必須要素 説明
      String name
      XML要素のローカル名です。
    • 要素の詳細

      • name

        String name
        XML要素のローカル名です。

        レビューアへの注意: デフォルト名はありません。注釈はファクトリ・メソッドに対するものであるため、メソッド名をファクトリ・メソッド名から派生できるか明らかでありません。

        関連項目:
        namespace()
      • scope

        Class scope
        マッピングのスコープです。

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

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

        String namespace
        XML要素の名前空間名です。

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

        関連項目:
        name()
        デフォルト:
        「##default」
      • substitutionHeadNamespace

        String substitutionHeadNamespace
        置換グループの先頭XML要素の名前空間名です。

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

        substitutionHeadName()がの場合、この値は##defaultにしかできません。 substitutionHeadName()の値がの場合、この要素は置換グループの一部でないため、値は無視されます。

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

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

        関連項目:
        substitutionHeadName()
        デフォルト:
        「##default」
      • substitutionHeadName

        String substitutionHeadName
        置換グループの先頭要素のXMLローカル名です。

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

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

        String defaultValue
        この要素のデフォルト値です。

        この注釈要素のデフォルトとして指定されている

        ' '
        値は、nullの代わりに使用して実装が非デフォルト値の状態を認識できるようにする経済的な代替品です。
        デフォルト:
        「\u0000」