|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
javax.xml.bind.annotation Annotation Type XmlMixed
Implements:
Annotation
@Retention(value=RUNTIME)@Target(value={FIELD, METHOD})
注释 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><xs:element name="quantity" type="xs:positiveInteger"> </xs:element><xs:element name="productName" type="xs:string"> <!-- etc. --> </xs:element></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 ommitted.) 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</biginteger></string><string> createLetterBodyProductName(String value); // type instance factory LetterBody> createLetterBody(); } </string></letterbody></xs:element>
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 实例文档:
可以使用以下 JAXB API 调用来构造上述文档:<letterbody> Dear Mr.<name>Robert Smith</name> Your order of <quantity>1</quantity> <productname>Baby Monitor</productname> shipped from our warehouse. .... </letterbody>
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 </letterbody>
有关其他公共信息,请参阅 javax.xml.bind.package javadoc 中的“包规范”。
since | JAXB2.0 |
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)
<!-- schema fragment having mixed content --> <xs:complextype name="letterBody" mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"> </xs:element><xs:element name="quantity" type="xs:positiveInteger"> </xs:element><xs:element name="productName" type="xs:string"> <!-- etc. --> </xs:element></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 ommitted.) 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</biginteger></string><string> createLetterBodyProductName(String value); // type instance factory LetterBody> createLetterBody(); } </string></letterbody></xs:element>
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
that can be constructed using following JAXB API calls.<letterbody> Dear Mr.<name>Robert Smith</name> Your order of <quantity>1</quantity> <productname>Baby Monitor</productname> shipped from our warehouse. .... </letterbody>
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 </letterbody>
See "Package Specification" in javax.xml.bind.package javadoc for additional common information.
- Since:
- JAXB2.0
- Author:
- Kohsuke Kawaguchi
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: REQUIRED | OPTIONAL | DETAIL: ELEMENT |
Submit a bug or feature
Copyright 2007 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.
PS : 未经我党受权你也可自由散发此文档。 如有任何错误请自行修正;若因此而造成任何损失请直接找人民主席,请勿与本人联系。谢谢!