The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available.
See Java Language Changes for a summary of updated language features in Java SE 9 and subsequent releases.
See JDK Release Notes for information about new features, enhancements, and removed or deprecated options for all JDK releases.
This section describes the default XML-to-Java bindings used by JAXB. All of these bindings can be overridden globally or case-by-case by using a custom binding declaration. See the JAXB Specification for complete information about the default JAXB bindings.
A schema component using a simple type definition typically binds to a Java property. Because there are different kinds of schema components, the following Java property attributes (common to the schema components) include:
The rest of the Java property attributes are specified in the schema component using the simple type definition.
The following sections explain the default schema-to-Java, JAXBElement, and Java-to-schema data type bindings.
The Java language provides a richer set of data types than the XML schema. The following table provides a mapping of XML data types to Java data types in JAXB.
Table: 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 |
When XML element information cannot be inferred by the derived Java representation of the XML content, a JAXBElement object is provided. This object has methods to get and set the object name and object value.
The following table shows the default mapping of Java classes to XML data types.
Table: 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 |