自定义生成的类和 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 注解 的容器 注解。默认设置:无 |