文档

Java™ 教程
隐藏目录
自定义生成的类和 Java 程序元素
路径:Java XML绑定(JAXB)
课程:JAXB简介

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

以下部分介绍了如何自定义生成的JAXB类和Java程序元素。

从Schema到Java

自定义JAXB绑定声明使您可以根据XML模式中的XML特定约束以外的要求自定义生成的JAXB类,包括Java特定的细化,如类和包名称映射。

JAXB提供了两种自定义XML模式的方式:

本文档后面提供了示例代码,展示了如何自定义JAXB绑定。

从Java到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模式内置类型。
默认设置:
@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 enum类型一起使用的JAXB注解。

表:与Java enum类型相关的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
@XmlElement (
    name = "##default", 
    nillable = false, 
    namespace = "##default", 
    type = DEFAULT.class, 
    defaultValue = "\u0000"
)
@XmlElements@XmlElement
@XmlElementRef
@XmlElementRef (
    name = "##default", 
    namespace = "##default", 
    type = DEFAULT.class
)
@XmlElementRefs@XmlElementRef
@XmlElementWrapper
@XmlElementWrapper (
    name = "##default", 
    namespace = "##default", 
    nillable = false
)
@XmlAnyElement
@XmlAnyElement (
    lax = false, 
    value = W3CDomHandler.class
)
@XmlAttribute
@XmlAttribute (
    name = ##default, 
    required = false, 
    namespace = "##default" 
)
@XmlAnyAttribute
@XmlTransient
@XmlValuesimpleContent
@XmlID
@XmlIDREF
@XmlList
@XmlMixed
@XmlMimeType
@XmlAttachmentRef
@XmlInlineBinaryData


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

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

注解 描述和默认设置
@XmlElementDecl 将工厂方法映射到XML元素。
默认设置:
@XmlElementDecl (
    scope = GLOBAL.class, 
    namespace = "##default", 
    substitutionHeadNamespace = "##default", 
    substitutionHeadName = ""
)


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

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

注解 描述和默认设置
@XmlJavaTypeAdapter 使用实现了@XmlAdapter注解的适配器进行自定义编组。
默认设置:
@XmlJavaTypeAdapter ( type = DEFAULT.class )
@XmlJavaTypeAdapters 用于在包级别定义多个@XmlJavaTypeAdapter注解的容器注解。
默认设置: 无



上一页:绑定XML模式
下一页:JAXB示例