T.M. SoftStudio

feci quod potui, faciant meliora potentes

JAXB API

Пакеты javax.xml.bind.annotation и javax.xml.bind.annotation.adapters определяют аннотации программных элементов, обеспечивающие их связь с XML-схемой. JAXB-аннотации классифицируются относительно областей их применения: аннотации пакета, классов, перечислений, JavaBean-свойств, JavaBean-полей, параметров.

Аннотация @XmlAccessorOrder применяется к пакету и к классу верхнего уровня и используется для определения порядка, в котором располагаются XML-элементы, связанные с JavaBean-свойствами (или полями). Аннотация @XmlAccessorType(XmlAccessOrder.UNDEFINED) является аннотацией по умолчанию, и порядок обработки JavaBean-свойств (или полей) зависит от реализации. Аннотация @XmlAccessorOrder(AccessorOrder.ALPHABETICAL) определяет порядок расположения по алфавиту.

Аннотация @XmlAccessorType применяется к пакету и к классу верхнего уровня и используется для установки сериализации JavaBean-свойств (или полей). По умолчанию JAXB-реализация сериализует все публичные поля и свойства (аннотация @XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)). С помощью аннотаций @XmlAccessorType(XmlAccessType.FIELD), @XmlAccessorType(XmlAccessType.PROPERTY), @XmlAccessorType(XmlAccessType.NONE) можно контролировать сериализацию только полей, только свойств или отменять сериализацию.

Аннотация @XmlSchema применяется к пакету и используется для связывания имени пакета с XML-пространством имен. Аннотация @XmlSchema(namespace = "...") используется для переопределения значения атрибута targetNamespace в элементе <xsd:schema>, аннотация @XmlSchema(xmlns = {@XmlNs(prefix = "...", namespaceURI="...")}) служит для переопределения объявления префикса и URI пространства имен в элементе <xsd:schema> XML-схемы. Аннотация @XmlSchema(elementFormDefault=[XmlNsForm.UNQUALIFIED| XmlNsForm.QUALIFIED|XmlNsForm.UNSET]) используется для определения значения атрибута elementFormDefault в элементе <xsd:schema>.

Аннотация @XmlSchemaType(name="..." type=... namespace="...") применяется к пакету и к JavaBean-свойствам (или полям) и используется для связывания Java-типа с XML-типом данных. Элемент name указывает XML-тип, а дополнительные элементы type и namespace — Java-класс, представляющий Java-тип, и пространство имен соответствующего элемента XML-схемы (по умолчанию "http://www.w3.org/2001/XMLSchema").

Аннотация @XmlSchemaTypes является контейнером для аннотаций @XmlSchemaType: @XmlSchemaTypes({@XmlSchemaType(...), @XmlSchemaType(...)}).

Аннотация @XmlJavaTypeAdapter(value=... type=...) применяется к пакету, классу, перечислениям, к JavaBean-свойствам (или полям), параметрам и используется для указания Java-класса, расширяющего класс javax.xml.bind.annotation.adapters.XmlAdapter<ValueType,BoundType> и обеспечивающего адаптацию Java-типа к XML-типу при маршализации. Обязательный элемент value указывает Java-класс, расширяющий XmlAdapter, а дополнительный элемент type указывает адаптируемый Java-тип.

Аннотация @XmlJavaTypeAdapters служит контейнером для аннотаций @XmlJavaTypeAdapter: @XmlJavaTypeAdapters({@XmlJavaTypeAdapter(...), @XmlJavaTypeAdapter(...)}).

Аннотация @XmlInlineBinaryData применяется к классу и к JavaBean-свойствам (или полям) и запрещает вызов методов AttachmentMarshaller.addMtomAttachment() и AttachmentMarshaller.addMtomAttachment() для JAXB-свойств.

Аннотация @XmlRootElement(name="..." namespace="...") применяется к классам и перечислениям и связывает их с XML-элементами. Дополнительные элементы name и namespace указывают локальное имя и пространство имен XML-элемента.

Аннотация @XmlType(name="..." propOrder={...} namespace="..." factoryfactoryMethod=...) применяется к классам и перечислениям и связывает их с объявлениями типа данных в XML-схеме. Дополнительные элементы: name — имя объявления <xsd:complexType> или <xsd:simpleType>; propOrder — порядок расположения XML-элементов; namespace — URI целевого пространства имен; factoryClass — класс-фабрика, отвечающий за создание JAXB-объектов; factoryMethod — метод-фабрика, отвечающий за создание JAXB-объектов.

Аннотация @XmlEnum(value=...) применяется к Java-перечислениям и используется для связывания их с XML-перечислениями <xsd:enumeration>. Дополнительный элемент value указывает Java-тип, связанный с простым XML-типом перечисления (по умолчанию java.lang.String.class). Аннотация @XmlEnumValue(value=...) применяется к константам перечисления и уточняет значения атрибутов value элементов <xsd:enumeration>.

Аннотация @XmlElement(name="..." nillable=... required=... namespace="..." defaultValue=... type=...) применяется к JavaBean-свойствам (или полям) и связывает их с XML-элементами <xsd:element>. Дополнительные элементы: name — имя XML-элемента; nillable — значение атрибута xsi:nil элемента XML-схемы; required — если false (по умолчанию), тогда minOccurs="0" и maxOccurs="1" или maxOccurs="unbounded"; namespace — URI целевого пространства имен элемента XML-схемы; defaultValue — значение атрибута default элемента XML-схемы; type — Java-класс, представляющий тип данных элемента.

Аннотация @XmlElements служит контейнером для аннотаций @XmlElement: @XmlElements({ @XmlElement(...),@XmlElement(...) }).

Аннотация @XmlElementRef(type=... namespace="..." name="..."), также как и аннотация @XmlElement, применяется к JavaBean-свойствам (или полям) и связывает их с XML-элементами, однако аннотация @XmlElement связывает статически имя XML-элемента с именем Java-свойства, а аннотация @XmlElementRef позволяет получать имя XML-элемента из экземпляра типа Java-свойства во время выполнения кода, т. е. динамически. Аннотация @XmlElementRef связывает Java-свойство с атрибутом ref элемента <xsd:element>. Дополнительные элементы: type — Java-класс, представляющий тип данных элемента; namespace и name — пространство имен и имя XML-элемента для Java-свойства.

Аннотация @XmlElementRefs служит контейнером для аннотаций @XmlElementRef и связывает Java-свойство с элементом <xsd:choice>.

Аннотация @XmlElementWrapper(name="..." nillable=... namespace="...") применяется к JavaBean-свойствам (или полям), представляющим коллекции, и отвечает за генерацию XML-элемента обертки для коллекции элементов. Дополнительные элементы: name — имя элемента-обертки, namespace — пространство имен элемента-обертки, nillable — значение атрибута xsi:nil.

Аннотация @XmlAnyElement(lax=... value=...) применяется к JavaBean-свойствам (или полям) и связывает их с элементами <xsd:any>. Дополнительные элементы: lax — если true, тогда значение атрибута processContents="lax"; value указывает Java-класс, реализующий интерфейс javax.xml.bind.annotation.DomHandler<ElementT,ResultT extends Result> и отвечающий за конвертацию XML-данных в DOM-данные и наоборот (по умолчанию javax.xml.bind.annotation.W3CDomHandler.class).

Аннотация @XmlAttribute(name="..." required=... namespace="...") применяется к JavaBean-свойствам (или полям) и связывает их с элементами <xsd:attribute>. Дополнительные элементы: name — имя атрибута; required — если true, тогда значение атрибута use="required"; namespace — пространство имен атрибута.

Аннотация @XmlAnyAttribute применяется к JavaBean-свойствам (или полям) типа java.util.Map и связывает их с элементом <xsd:anyAttribute/>.

Аннотация @XmlTransient применяется к JavaBean-свойствам (или полям) и предотвращает их связывание с XML-представлением.

Аннотация @XmlValue применяется к JavaBean-свойствам (или полям) и связывает их с элементами <xsd:simpleType> или элементом <xsd:simpleContent> элемента <xsd:complexType>.

Аннотация @XmlID применяется к JavaBean-свойствам (или полям) типа java.lang.String и связывает их с элементами <xsd:attribute name="..." type="xsd:ID"/>.

Аннотация @XmlIDREF применяется к JavaBean-свойствам (или полям) и связывает их с элементами <xs:element name="..." type="xs:IDREF"/>.

Аннотация @XmlList применяется к JavaBean-свойствам (или полям) и параметрам типа коллекции и связывает их с XML-списками простого типа.

Аннотация @XmlMixed применяется к JavaBean-свойствам (или полям) и связывает их с содержимым элемента <xsd:complexType name="..." mixed="true">.

Аннотация @XmlMimeType(value=["image/*", "text/*"...]) применяется к JavaBean-свойствам (или полям) и параметрам типа java.awt.Image или javax.xml.transform.Source и связывает их с элементами

<xsd:element name="..." xmime:expectedContentTypes="value"

type="xs:base64Binary"

xmlns:xmime="http://www.w3.org/2005/05/xmlmime"/>

Аннотация @XmlAttachmentRef применяется к JavaBean-свойствам (или полям) и параметрам и связывает их со ссылками на MIME-вложения — <xsd:element name="..." type="ref:swaRef"/>.

Аннотация @XmlElementDecl(name="..." scope=... namespace="..." substitutionHeadNamespace="..." substitutionHeadName="..." defaultValue="...") маркирует метод-фабрику, связывая его с элементом <xsd:element>, при этом класс-фабрика маркируется аннотацией @XmlRegistry. Обязательный элемент name указывает имя XML-элемента, а дополнительные элементы: scope — область действия элемента (по умолчанию javax.xml.bind.annotation.XmlElementDecl.GLOBAL.class), namespace — пространство имен элемента, substitutionHeadNamespace — пространство имен элемента, указанного в атрибуте substitutionGroup, substitutionHeadName — имя элемента, указанного в атрибуте substitutionGroup, defaultValue — значение по умолчанию элемента.