# 绑定 XML 模式

> 原文： [https://docs.oracle.com/javase/tutorial/jaxb/intro/bind.html](https://docs.oracle.com/javase/tutorial/jaxb/intro/bind.html)

本节介绍 JAXB 使用的默认 XML 到 Java 绑定。所有这些绑定都可以通过使用自定义绑定声明全局覆盖或逐个覆盖。有关默认 JAXB 绑定的完整信息，请参阅 [JAXB 规范](http://jaxb.java.net)。

## 简单类型定义

使用简单类型定义的模式组件通常绑定到 Java 属性。由于存在不同类型的架构组件，因此以下 Java 属性属性（架构组件通用）包括：

*   基础类型
*   集合类型，如果有的话
*   谓语

其余的 Java 属性属性使用`简单`类型定义在架构组件中指定。

## 默认数据类型绑定

以下部分介绍了默认的 schema-to-Java， `JAXBElement` 和 Java-to-schema 数据类型绑定。

### Schema-to-Java Mapping

Java 语言提供了比 XML 模式更丰富的数据类型集。下表提供了 JAXB 中 XML 数据类型到 Java 数据类型的映射。

表：XML Schema 内置数据类型的 JAXB 映射

| XML 模式类型 | Java 数据类型 |
| --- | --- |
| `xsd：string` | `java.lang.String` |
| `xsd：整数` | `java.math.BigInteger` |
| `xsd：int` | `int` |
| `xsd.long` | `长` |
| `xsd：短` | `短` |
| `xsd：decimal` | `java.math.BigDecimal` |
| `xsd：float` | `float` |
| `xsd：double` | `双` |
| `xsd：boolean` | `布尔` |
| `xsd：byte` | `字节` |
| `xsd：QName` | `javax.xml.namespace.QName` |
| `xsd：dateTime` | `javax.xml.datatype.XMLGregorianCalendar` |
| `xsd：base64Binary` | `byte []` |
| `xsd：hexBinary` | `byte []` |
| `xsd：unsignedInt` | `长` |
| `xsd：unsignedShort` | `int` |
| `xsd：unsignedByte` | `短` |
| `xsd：时间` | `javax.xml.datatype.XMLGregorianCalendar` |
| `xsd：date` | `javax.xml.datatype.XMLGregorianCalendar` |
| `xsd：g` | `javax.xml.datatype.XMLGregorianCalendar` |
| `xsd：anySimpleType` | `java.lang.Object` |
| `xsd：anySimpleType` | `java.lang.String` |
| `xsd：持续时间` | `javax.xml.datatype.Duration` |
| `xsd：注释` | `javax.xml.namespace.QName` |

### `JAXBElement` 对象

当 XML 内容的派生 Java 表示无法推断 XML 元素信息时，会提供 `JAXBElement` 对象。此对象具有获取和设置对象名称和对象值的方法。

### Java-to-Schema Mapping

下表显示了 Java 类到 XML 数据类型的默认映射。

表：XML 数据类型到 Java 类的 JAXB 映射

| Java 类 | XML 数据类型 |
| --- | --- |
| `java.lang.String` | `xs：string` |
| `java.math.BigInteger` | `xs：整数` |
| `java.math.BigDecimal` | `xs：十进制` |
| `java.util.Calendar` | `xs：dateTime` |
| `java.util.Date` | `xs：dateTime` |
| `javax.xml.namespace.QName` | `xs：QName` |
| `java.net.URI` | `xs：string` |
| `javax.xml.datatype.XMLGregorianCalendar` | `xs：anySimpleType` |
| `javax.xml.datatype.Duration` | `xs：持续时间` |
| `java.lang.Object` | `xs：anyType` |
| `java.awt.Image` | `xs：base64Binary` |
| `javax.activation.DataHandler` | `xs：base64Binary` |
| `javax.xml.transform.Source` | `xs：base64Binary` |
| `java.util.UUID` | `xs：string` |