Home | Download | PDF | API | FAQ | Search | Feedback | History

> ## Binding XML Schemas

> This section describes the default XML-to-Java bindings used by JAXB. All of these bindings can be overridden on global or case-by-case levels by means of a custom binding declaration. See the JAXB Specification for complete information about the default JAXB bindings.

> ### Simple Type Definitions

> A schema component using a simple type definition typically binds to a Java property. Since there are different kinds of such schema components, the following Java property attributes (common to the schema components) include:

> - Base type
> - Collection type, if any
> - Predicate

> The rest of the Java property attributes are specified in the schema component using the `simple` type definition.

> ### Default Data Type Bindings

> #### Schema-to-Java

> The Java language provides a richer set of data type than XML schema. Table 16-1 lists the mapping of XML data types to Java data types in JAXB.

> Table 16-1 JAXB Mapping of XML Schema Built-in Data Types
> XML Schema Type | Java Data Type
> --- | ---
> `xsd:string` | `java.lang.String`
> `xsd:integer` | `java.math.BigInteger`
> `xsd:int` | `int`
> `xsd.long` | `long`
> `xsd:short` | `short`
> `xsd:decimal` | `java.math.BigDecimal`
> `xsd:float` | `float`
> `xsd:double` | `double`
> `xsd:boolean` | `boolean`
> `xsd:byte` | `byte`
> `xsd:QName` | `javax.xml.namespace.QName`
> `xsd:dateTime` | `javax.xml.datatype.XMLGregorianCalendar`
> `xsd:base64Binary` | `byte[]`
> `xsd:hexBinary` | `byte[]`
> `xsd:unsignedInt` | `long`
> `xsd:unsignedShort` | `int`
> `xsd:unsignedByte` | `short`
> `xsd:time` | `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:duration` | `javax.xml.datatype.Duration`
> `xsd:NOTATION` | `javax.xml.namespace.QName`

> #### JAXBElement

> When XML element information can not be inferred by the derived Java representation of the XML content, a JAXBElement object is provided. This object has methods for getting and setting the object name and object value.

> #### Java-to-Schema

> Table 16-2 shows the default mapping of Java classes to XML data types.

> Table 16-2 JAXB Mapping of XML Data Types to Java classes.
> Java Class | XML Data Type
> --- | ---
> `java.lang.String` | `xs:string`
> `java.math.BigInteger` | `xs:integer`
> `java.math.BigDecimal` | `xs:decimal`
> `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:duration`
> `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`