declare namespace javax { namespace xml { namespace bind { namespace annotation { /** * Maps a factory method to a XML element. *
Usage
* The annotation creates a mapping between an XML schema element * declaration and a element factory method that returns a * JAXBElement instance representing the element * declaration. Typically, the element factory method is generated * (and annotated) from a schema into the ObjectFactory class in a * Java package that represents the binding of the element * declaration's target namespace. Thus, while the annotation syntax * allows @XmlElementDecl to be used on any method, semantically * its use is restricted to annotation of element factory method. * The usage is subject to the following constraints: *Example 1: Annotation on a factory method *
* // Example: code fragment * @XmlRegistry * class ObjectFactory { * @XmlElementDecl(name="foo") * JAXBElement<String> createFoo(String s) { ... } * } **
* <!-- XML input --> * <foo>string * // Example: code fragment corresponding to XML input * JAXBElement*o = * (JAXBElement )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"/> *
Example 2: Element declaration with non local scope *
* The following example illustrates the use of scope annotation * parameter in binding of element declaration in schema derived * code. *
* The following example may be replaced in a future revision of * this 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* Without scope createFoo and createPeaFoo would become ambiguous * since both of them map to a XML schema element with the same local * name "foo". * @see XmlRegistry * @since JAXB 2.0 */ // @ts-ignore abstract class XmlElementDecl implements java.lang.annotation.Annotation { } } } } }createPeaFoo(String s); * @XmlElementDecl(scope=Pea.class,name="bar") * JAXBElement createPeaBar(String s); * @XmlElementDecl(name="foo") * JAXBElement createFoo(Integer i); * } *