Annotate a JavaBean multi-valued property to support mixed content.
The usage is subject to the following constraints:
- can be used with @XmlElementRef, @XmlElementRefs or @XmlAnyElement
The following can be inserted into @XmlMixed annotated multi-valued property
- XML text information items are added as values of java.lang.String.
- Children element information items are added as instances of
JAXBElement
or instances with a class that is annotated with
@XmlRootElement.
- Unknown content that is not be bound to a JAXB mapped class is inserted
as
Element
. (Assumes property annotated with @XmlAnyElement)
Below is an example of binding and creation of mixed content.
// Schema-derived Java code:
// (Only annotations relevant to mixed content are shown below,
// others are ommitted.)
import java.math.BigInteger;
public class ObjectFactory {
// element instance factories
JAXBElement createLetterBody(LetterBody value);
JAXBElement createLetterBodyName(String value);
JAXBElement createLetterBodyQuantity(BigInteger value);
JAXBElement 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(){...}
}
The following is an XML instance document with mixed content
Dear Mr.Robert Smith
Your order of 1 Baby
Monitor shipped from our warehouse. ....
that can be constructed using following JAXB API calls.
LetterBody lb = ObjectFactory.createLetterBody();
JAXBElement 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
See "Package Specification" in javax.xml.bind.package javadoc for
additional common information.