<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<title>XmlMixed</title>
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
    try {
        if (location.href.indexOf('is-external=true') == -1) {
            parent.document.title="XmlMixed";
        }
    }
    catch(err) {
    }
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/xml/bind/annotation/XmlMimeType.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/xml/bind/annotation/XmlNs.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/xml/bind/annotation/XmlMixed.html" target="_top">Frames</a></li>
<li><a href="XmlMixed.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_top");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li>Optional</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Element</li>
</ul>
</div>
<a name="skip.navbar.top">
<!--   -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">jakarta.xml.bind.annotation</div>
<h2 title="Annotation Type XmlMixed" class="title">Annotation Type XmlMixed</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Retention(value=RUNTIME)
 @Target(value={FIELD,METHOD})
public @interface <span class="memberNameLabel">XmlMixed</span></pre>
<div class="block"><p>
 Annotate a JavaBean multi-valued property to support mixed content.

 <p>
 The usage is subject to the following constraints:
 <ul>
   <li> can be used with &#64;XmlElementRef, &#64;XmlElementRefs or &#64;XmlAnyElement</li>
 </ul>
 <p>
 The following can be inserted into &#64;XmlMixed annotated multi-valued property
 <ul>
 <li>XML text information items are added as values of java.lang.String.</li>
 <li>Children element information items are added as instances of
 <a href="../../../../jakarta/xml/bind/JAXBElement.html" title="class in jakarta.xml.bind"><code>JAXBElement</code></a> or instances with a class that is annotated with
 &#64;XmlRootElement.</li>
 <li>Unknown content that is not be bound to a JAXB mapped class is inserted
 as <code>Element</code>. (Assumes property annotated with &#64;XmlAnyElement)</li>
 </ul>

 Below is an example of binding and creation of mixed content.
 <pre><code>
 
  &lt;!-- schema fragment having  mixed content --&gt;
  &lt;xs:complexType name="letterBody" mixed="true"&gt;
    &lt;xs:sequence&gt;
	&lt;xs:element name="name" type="xs:string"/&gt;
	&lt;xs:element name="quantity" type="xs:positiveInteger"/&gt;
	&lt;xs:element name="productName" type="xs:string"/&gt;
	&lt;!-- etc. --&gt;
    &lt;/xs:sequence&gt;
  &lt;/xs:complexType&gt;
  &lt;xs:element name="letterBody" type="letterBody"/&gt;
 
 // 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&lt;LetterBody&gt; createLetterBody(LetterBody value);
 	JAXBElement&lt;String&gt;     createLetterBodyName(String value);
 	JAXBElement&lt;BigInteger&gt; createLetterBodyQuantity(BigInteger value);
 	JAXBElement&lt;String&gt;     createLetterBodyProductName(String value);
      // type instance factory
 	LetterBody createLetterBody();
 }
 </code></pre>
 <pre>
 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.
        &#64;XmlMixed 
        &#64;XmlElementRefs({
                &#64;XmlElementRef(name="productName", type=JAXBElement.class),
                &#64;XmlElementRef(name="quantity", type=JAXBElement.class),
                &#64;XmlElementRef(name="name", type=JAXBElement.class)})
        List getContent(){...}
 }
 </pre>
 The following is an XML instance document with mixed content
 <pre><code>
 &lt;letterBody&gt;
 Dear Mr.&lt;name&gt;Robert Smith&lt;/name&gt;
 Your order of &lt;quantity&gt;1&lt;/quantity&gt; &lt;productName&gt;Baby
 Monitor&lt;/productName&gt; shipped from our warehouse. ....
 &lt;/letterBody&gt;
 </code></pre>
 that can be constructed using following JAXB API calls.
 <pre><code>
 LetterBody lb = ObjectFactory.createLetterBody();
 JAXBElement&lt;LetterBody&gt; 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
 </code></pre>

 <p>See "Package Specification" in jakarta.xml.bind.package javadoc for
 additional common information.</p></div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.6, JAXB 2.0</dd>
</dl>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!--   -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!--   -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../jakarta/xml/bind/annotation/XmlMimeType.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../jakarta/xml/bind/annotation/XmlNs.html" title="annotation in jakarta.xml.bind.annotation"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?jakarta/xml/bind/annotation/XmlMixed.html" target="_top">Frames</a></li>
<li><a href="XmlMixed.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
  allClassesLink = document.getElementById("allclasses_navbar_bottom");
  if(window==top) {
    allClassesLink.style.display = "block";
  }
  else {
    allClassesLink.style.display = "none";
  }
  //-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li>Optional</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Element</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!--   -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>
