# 自定义生成的类和 Java 程序元素 > 原文: [https://docs.oracle.com/javase/tutorial/jaxb/intro/customize.html](https://docs.oracle.com/javase/tutorial/jaxb/intro/customize.html) 以下部分描述如何自定义生成的 JAXB 类和 Java 程序元素。 ## Schema-to-Java 自定义 JAXB 绑定声明使您能够自定义生成的 JAXB 类,超出 XML 模式中特定于 XML 的约束,以包括特定于 Java 的细化,例如类和包名称映射。 JAXB 提供了两种自定义 XML 模式的方法: * 作为源 XML 模式中的内联注释 * 作为传递给 JAXB 绑定编译器的外部绑定自定义文件中的声明 本文档稍后将提供显示如何自定义 JAXB 绑定的代码示例。 ## Java-to-Schema `javax.xml.bind.annotation` 包中定义的 JAXB 注释可用于将 Java 程序元素自定义为 XML 模式映射。下表总结了可与 Java 包一起使用的 JAXB 注释。 表:与 Java 包关联的 JAXB 批注 注解:`@XmlSchema` 说明:将包映射到 XML 目标命名空间。 默认设置: ``` @XmlSchema ( xmlns = {}, namespace = "", elementFormDefault = XmlNsForm.UNSET, attributeFormDefault = XmlNsForm.UNSET ) ``` --- 注解:`@XmlAccessorType` 说明:控制字段和属性的默认序列化。 默认设置: ``` @XmlAccessorType ( value = AccessType.PUBLIC_MEMBER ) ``` --- 注解:`@XmlAccessorOrder` 说明:控制映射到 XML 元素的属性和字段的默认顺序。 默认设置: ``` @XmlAccessorOrder ( value = AccessorOrder.UNDEFINED ) ``` --- 注解:`@XmlSchemaType` 说明:允许自定义映射到 XML Schema 内置类型。 默认设置: ``` @XmlSchemaType ( namespace = "http://www.w3.org/2001/XMLSchema", type = DEFAULT.class ) ``` --- 注解:`@XmlSchemaTypes` 说明:用于定义多个 `@XmlSchemaType` 注释的容器注释。 默认设置:无 下表总结了可以与 Java 类一起使用的 JAXB 注释。 表:与 Java 类关联的 JAXB 批注 注解:`@XmlType` 说明:将 Java 类映射到模式类型。 默认设置: ``` @XmlType ( name = "##default", propOrder = {""}, namespace = "##default", factoryClass = DEFAULT.class, factoryMethod = "" ) ``` --- 注解:`@XmlRootElement` 说明:将全局元素与类映射到的模式类型相关联。 默认设置: ``` @XmlRootElement ( name = "##default", namespace = "##default" ) ``` 下表总结了可与 Java `枚举`类型一起使用的 JAXB 注释。 表:与 Java `枚举`类型相关联的 JAXB 注释 注解:`@XmlEnum` 说明:将 Java 类型映射到 XML 简单类型。 默认设置: ``` @XmlEnum ( value = String.class ) ``` --- 注解:`@XmlEnumValue` 说明:将 Java 类型映射到 XML 简单类型。 默认设置:无 --- 注解:`@XmlType` 说明:将 Java 类映射到模式类型。 默认设置: ``` @XmlType ( name = "##default", propOrder = {""}, namespace = "##default", factoryClass = DEFAULT.class, factoryMethod = "" ) ``` --- 注解:`@XmlRootElement` 说明:将全局元素与类映射到的模式类型相关联。 默认设置: ``` @XmlRootElement ( name = "##default", namespace = "##default" ) ``` 下表总结了可与 Java 属性和字段一起使用的 JAXB 注释。 表:与 Java 属性和字段关联的 JAXB 批注 注解:`@XmlElement` 说明:将 JavaBeans 属性或字段映射到从属性或字段名称派生的 XML 元素。 默认设置: ``` @XmlElement ( name = "##default", nillable = false, namespace = "##default", type = DEFAULT.class, defaultValue = "\u0000" ) ``` --- 注解:`@XmlElements` 说明:用于定义多个 `@XmlElement` 注释的容器注释。 默认设置:无 --- 注解:`@XmlElementRef` 说明:将 JavaBeans 属性或字段映射到从属性或字段类型派生的 XML 元素。 默认设置: ``` @XmlElementRef ( name = "##default", namespace = "##default", type = DEFAULT.class ) ``` --- 注解:`@XmlElementRefs` 说明:用于定义多个 `@XmlElementRef` 注释的容器注释。 默认设置:无 --- 注解:`@XmlElementWrapper` 说明:围绕 XML 表示生成包装元素。它通常用作集合的包装 XML 元素。 默认设置: ``` @XmlElementWrapper ( name = "##default", namespace = "##default", nillable = false ) ``` --- 注解:`@XmlAnyElement` 说明:将 JavaBeans 属性映射到 XML 信息集表示或 JAXB 元素。 默认设置: ``` @XmlAnyElement ( lax = false, value = W3CDomHandler.class ) ``` --- 注解:`@XmlAttribute` 说明:将 JavaBeans 属性映射到 XML 属性。 默认设置: ``` @XmlAttribute ( name = ##default, required = false, namespace = "##default" ) ``` --- 注解:`@XmlAnyAttribute` 说明:将 JavaBeans 属性映射到通配符属性的映射。 默认设置:无 --- 注解:`@XmlTransient` 说明:阻止将 JavaBeans 属性映射到 XML 表示。 默认设置:无 --- 注解:`@XmlValue` 说明:使用 `simpleContent` 或 XML Schema 简单类型定义类到 XML Schema 复杂类型的映射。 默认设置:无 --- 注解:`@XmlID` 说明:将 JavaBeans 属性映射到 XML ID。 默认设置:无 --- 注解:`@XmlIDREF` 说明:将 JavaBeans 属性映射到 XML IDREF。 默认设置:无 --- 注解:`@XmlList` 说明:将属性映射到列表简单类型。 默认设置:无 --- 注解:`@XmlMixed` 说明:标记 JavaBeans 多值属性以支持混合内容。 默认设置:无 --- 注解:`@XmlMimeType` 说明:关联控制属性的 XML 表示的 MIME 类型。 默认设置:无 --- 注解:`@XmlAttachmentRef` 说明:标记其 XML 表单是对 mime 内容的 URI 引用的字段/属性。 默认设置:无 --- 注解:`@XmlInlineBinaryData` 说明:禁用对绑定到 XML 中的 base64 编码二进制数据的数据类型的 XOP 编码的考虑。 默认设置:无 下表总结了可与对象工厂一起使用的 JAXB 注释。 表:与对象工厂关联的 JAXB 注释 注解:`@XmlElementDecl` 说明: 将工厂方法映射到 XML 元素。 默认设置: ``` @XmlElementDecl ( scope = GLOBAL.class, namespace = "##default", substitutionHeadNamespace = "##default", substitutionHeadName = "" ) ``` 下表总结了可与适配器一起使用的 JAXB 注释。 表:与适配器关联的 JAXB 注释 注解:`@XmlJavaTypeAdapter` 说明:使用实现 `@XmlAdapter` 注释的适配器进行自定义编组。 默认设置: ``` @XmlJavaTypeAdapter ( type = DEFAULT.class ) ``` --- 注解:`@XmlJavaTypeAdapters` 说明:用于在包级别定义多个 `@XmlJavaTypeAdapter` 注释的容器注释。 默认设置:无