自定义生成的类和 Java 程序元素

以下各节描述如何自定义生成的 JAXB 类和 Java 程序元素。

Schema-to-Java

定制 JAXB 绑定声明使您可以自定义生成的 JAXB 类,而超出 XMLPattern 中 XML 特定于约束的范围,以包括 Java 特定的改进,例如类和包名 Map。

JAXB 提供了两种定制 XMLPattern 的方法:

  • 作为源 XMLPattern 中的内联 注解

  • 在传递给 JAXB 绑定编译器的外部绑定定制文件中作为声明

本文档后面将提供显示如何自定义 JAXB 绑定的代码示例。

Java-to-Schema

javax\.xml\.bind\.annotation包中定义的 JAXB 注解可用于自定义 Java 程序元素到 XMLPatternMap。下表总结了可与 Java 包一起使用的 JAXB 注解。

表:与 Java 软件包相关联的 JAXB 注解

Annotation说明和默认设置
@XmlSchema将包 Map 到 XML 目标名称空间。

Default settings:
@XmlSchema (
xmlns = {},
名称空间=“”,
elementFormDefault = XmlNsForm.UNSET,
attributeFormDefault = XmlNsForm.UNSET
)
@XmlAccessorType控制字段和属性的默认序列化。
Default settings:
@XmlAccessorType (
值= AccessType.PUBLIC_MEMBER
)
@XmlAccessorOrder控制 Map 到 XML 元素的属性和字段的默认 Sequences。
Default settings:
@XmlAccessorOrder (
值= AccessorOrder.UNDEFINED
)
@XmlSchemaType允许自定义 Map 到 XML Schema 内置类型。
Default settings:
@XmlSchemaType (
namespace =
"http://www.w3.org/2001/XMLSchema",
类型= DEFAULT.class
)
@XmlSchemaTypes用于定义多个@XmlSchemaType注解 的容器 注解。
默认设置:无

下表总结了可与 Java 类一起使用的 JAXB 注解。

表:与 Java 类关联的 JAXB注解

Annotation说明和默认设置
@XmlType将 Java 类 Map 到架构类型。

Default settings:
@XmlType (
name =“ ## default”,
propOrder = {""},
名称空间=“ ## default”,
factoryClass = DEFAULT.class,
factoryMethod =“”
)
@XmlRootElement将全局元素与类所 Map 到的架构类型相关联。
Default settings:
@XmlRootElement (
name =“ ## default”,
名称空间=“ ## default”
)

下表总结了可以与 Java enum类型一起使用的 JAXB 注解。

表:与 Java enum类型关联的 JAXB 注解

Annotation说明和默认设置
@XmlEnum将 Java 类型 Map 为 XML 简单类型。

Default settings:
@XmlEnum ( value = String.class )
@XmlEnumValue将 Java 类型 Map 为 XML 简单类型。
默认设置:无
@XmlType将 Java 类 Map 到架构类型。
Default settings:
@XmlType (
name =“ ## default”,
propOrder = {""},
名称空间=“ ## default”,
factoryClass = DEFAULT.class,
factoryMethod =“”
)
@XmlRootElement将全局元素与类所 Map 到的架构类型相关联。
Default settings:
@XmlRootElement (
name =“ ## default”,
名称空间=“ ## default”
)

下表总结了可与 Java 属性和字段一起使用的 JAXB 注解。

表:与 Java 属性和字段相关联的 JAXB注解

Annotation说明和默认设置
@XmlElement将 JavaBeans 属性或字段 Map 到从属性或字段名称派生的 XML 元素。

Default settings:
@XmlElement (
name =“ ## default”,
nillable = false,
名称空间=“ ## default”,
类型= DEFAULT.class,
defaultValue =“\u0000”
)
@XmlElements用于定义多个@XmlElement注解 的容器 注解。
默认设置:无
@XmlElementRef将 JavaBeans 属性或字段 Map 到从属性或字段的类型派生的 XML 元素。
Default settings:
@XmlElementRef (
name =“ ## default”,
名称空间=“ ## default”,
类型= DEFAULT.class
)
@XmlElementRefs用于定义多个@XmlElementRef注解 的容器 注解。
默认设置:无
@XmlElementWrapper围绕 XML 表示生成包装器元素。它通常用作集合周围的包装 XML 元素。
Default settings:
@XmlElementWrapper (
name =“ ## default”,
名称空间=“ ## default”,
可否=假
)
@XmlAnyElement将 JavaBeans 属性 Map 到 XML 信息集表示形式或 JAXB 元素。
Default settings:
@XmlAnyElement (
松懈=假,
值= W3CDomHandler.class
)
@XmlAttribute将 JavaBeans 属性 Map 到 XML 属性。
Default settings:
@XmlAttribute (
名称= ##默认
必填=否,
名称空间=“ ## default”
)
@XmlAnyAttribute将 JavaBeans 属性 Map 到通配符属性的 Map。
默认设置:无
@XmlTransient防止 JavaBeans 属性 Map 到 XML 表示形式。
默认设置:无
@XmlValue定义类到具有simpleContent或 XML Schema 简单类型的 XML Schema 复杂类型的 Map。
默认设置:无
@XmlID将 JavaBeans 属性 Map 到 XML ID。
默认设置:无
@XmlIDREF将 JavaBeans 属性 Map 到 XML IDREF。
默认设置:无
@XmlList将属性 Map 到列表简单类型。
默认设置:无
@XmlMixed标记 JavaBeans 多值属性以支持混合内容。
默认设置:无
@XmlMimeType关联控制属性的 XML 表示形式的 MIME 类型。
默认设置:无
@XmlAttachmentRef将其 XML 形式标记为对 mime 内容的 URI 引用的字段/属性。
默认设置:无
@XmlInlineBinaryData对绑定到 XML 中以 base64 编码的二进制数据的数据类型禁用 XOP 编码。
默认设置:无

下表总结了可以与对象工厂一起使用的 JAXB 注解。

表:与对象工厂相关联的 JAXB注解

Annotation说明和默认设置
@XmlElementDecl将工厂方法 Map 到 XML 元素。

Default settings:
@XmlElementDecl (
作用域= GLOBAL.class,
名称空间=“ ## default”,
replacementHeadNamespace =“ ## default”,
replacementHeadName =“”
)

下表总结了可与适配器一起使用的 JAXB 注解。

表:与适配器相关联的 JAXB注解

Annotation说明和默认设置
@XmlJavaTypeAdapter使用实现@XmlAdapter注解的适配器进行自定义编组。

Default settings:
@XmlJavaTypeAdapter ( type = DEFAULT.class )
@XmlJavaTypeAdapters用于在包级别定义多个@XmlJavaTypeAdapter注解 的容器 注解。
默认设置:无