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

注釈型XmlMixed



  • @Retention(RUNTIME)
    @Target({FIELD,METHOD})
    public @interface XmlMixed

    混合コンテンツをサポートする複数値のJavaBeanプロパティを注釈します。

    使用には次の制約があります。

    • @XmlElementRef、@XmlElementRefs、または@XmlAnyElementとともに使用できます。

    @XmlMixedで注釈された複数値プロパティには、次を挿入できます。

    • XMLテキスト情報項目がjava.lang.Stringの値として追加されます。
    • 子要素の情報項目がJAXBElementのインスタンス、または、@XmlRootElementで注釈されたクラスを持つインスタンスとして追加されます。
    • JAXBマップ先クラスにバインドされない不明なコンテンツがElementとして挿入されます。 (@XmlAnyElementで注釈されたプロパティを仮定)
    次に、混合コンテンツのバインディングと作成の例を示します。
    
    
      <!-- schema fragment having  mixed content -->
      <xs:complexType name="letterBody" mixed="true">
        <xs:sequence>
          <xs:element name="name" type="xs:string"/>
          <xs:element name="quantity" type="xs:positiveInteger"/>
          <xs:element name="productName" type="xs:string"/>
          <!-- etc. -->
        </xs:sequence>
      </xs:complexType>
      <xs:element name="letterBody" type="letterBody"/>
    
     // Schema-derived Java code:
     // (Only annotations relevant to mixed content are shown below,
     //  others are omitted.)
     import java.math.BigInteger;
     public class ObjectFactory {
          // element instance factories
          JAXBElement<LetterBody> createLetterBody(LetterBody value);
          JAXBElement<String>     createLetterBodyName(String value);
          JAXBElement<BigInteger> createLetterBodyQuantity(BigInteger value);
          JAXBElement<String>     createLetterBodyProductName(String value);
          // type instance factory
          LetterBody createLetterBody();
     }
     
     public class LetterBody {
          // Mixed content can contain instances of Element classes
          // Name, Quantity and ProductName. Text data is represented as
          // java.util.String for text.
          @XmlMixed
          @XmlElementRefs({
                  @XmlElementRef(name="productName", type=JAXBElement.class),
                  @XmlElementRef(name="quantity", type=JAXBElement.class),
                  @XmlElementRef(name="name", type=JAXBElement.class)})
          List getContent(){...}
     }
     
    次に、混合コンテンツを含むXMLインスタンス文書を示します。
    
     <letterBody>
     Dear Mr.<name>Robert Smith</name>
     Your order of <quantity>1</quantity> <productName>Baby
     Monitor</productName> shipped from our warehouse. ....
     </letterBody>
     
    上記は、次のJAXB API呼出しを使用して作成できます。
    
     LetterBody lb = ObjectFactory.createLetterBody();
     JAXBElement<LetterBody> lbe = ObjectFactory.createLetterBody(lb);
     List gcl = lb.getContent();  //add mixed content to general content property.
     gcl.add("Dear Mr.");  // add text information item as a String.
    
     // add child element information item
     gcl.add(ObjectFactory.createLetterBodyName("Robert Smith"));
     gcl.add("Your order of "); // add text information item as a String
    
     // add children element information items
     gcl.add(ObjectFactory.
                          createLetterBodyQuantity(new BigInteger("1")));
     gcl.add(ObjectFactory.createLetterBodyProductName("Baby Monitor"));
     gcl.add("shipped from our warehouse");  // add text information item
     

    追加の一般的な情報については、javax.xml.bind.package javadocの「パッケージの仕様」を参照してください。

    導入されたバージョン:
    1.6, JAXB 2.0