JAXB (Java Platform SE 8 )
Keywords: javax.xml.bind.JAXB class
Date: 2026-04-22

javax.xml.bind

## Class JAXB

- java.lang.Object
- - javax.xml.bind.JAXB

-     public final class JAXB
      extends Object

  Class that defines convenience methods for common, simple use of JAXB.

  Methods defined in this class are convenience methods that combine several basic operations in the `JAXBContext`, `Unmarshaller`, and `Marshaller`. They are designed to be the prefered methods for developers new to JAXB. They have the following characterstics:

  1. Generally speaking, the performance is not necessarily optimal. It is expected that people who need to write performance critical code will use the rest of the JAXB API directly.
  2. Errors that happen during the processing is wrapped into `DataBindingException` (which will have `JAXBException` as its `cause`. It is expected that people who prefer the checked exception would use the rest of the JAXB API directly.

  In addition, the `unmarshal` methods have the following characteristic:

  1. Schema validation is not performed on the input XML. The processing will try to continue even if there are errors in the XML, as much as possible. Only as the last resort, this method fails with `DataBindingException`.

  Similarly, the `marshal` methods have the following characteristic:

  1. The processing will try to continue even if the Java object tree does not meet the validity requirement. Only as the last resort, this method fails with `DataBindingException`.

  All the methods on this class require non-null arguments to all parameters. The `unmarshal` methods either fail with an exception or return a non-null value.

  Since:
    2.1

- - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `marshal(Object jaxbObject, File xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, OutputStream xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, Result xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, String xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, URI xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, URL xml)` Writes a Java object tree to XML and store it to the specified location.
    `static void` | `marshal(Object jaxbObject, Writer xml)` Writes a Java object tree to XML and store it to the specified location.
    `static <T> T` | `unmarshal(File xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(InputStream xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(Reader xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(Source xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(String xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(URI xml, Class<T> type)` Reads in a Java object tree from the given XML input.
    `static <T> T` | `unmarshal(URL xml, Class<T> type)` Reads in a Java object tree from the given XML input.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### unmarshal

          public static <T> T unmarshal(File xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - Reads the entire file as XML.

    - #### unmarshal

          public static <T> T unmarshal(URL xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The resource pointed by the URL is read in its entirety.

    - #### unmarshal

          public static <T> T unmarshal(URI xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The URI is `turned into URL` and then follows the handling of `URL`.

    - #### unmarshal

          public static <T> T unmarshal(String xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The string is first interpreted as an absolute `URI`. If it's not `a valid absolute URI`, then it's interpreted as a `File`

    - #### unmarshal

          public static <T> T unmarshal(InputStream xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The entire stream is read as an XML infoset. Upon a successful completion, the stream will be closed by this method.

    - #### unmarshal

          public static <T> T unmarshal(Reader xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The character stream is read as an XML infoset. The encoding declaration in the XML will be ignored. Upon a successful completion, the stream will be closed by this method.

    - #### unmarshal

          public static <T> T unmarshal(Source xml,
                                        Class<T> type)

      Reads in a Java object tree from the given XML input.
      Parameters:
        `xml` - The XML infoset that the `Source` represents is read.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     File xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - XML will be written to this file. If it already exists, it will be overwritten.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     URL xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The XML will be `sent` to the resource pointed by this URL. Note that not all `URL`s support such operation, and exact semantics depends on the `URL` implementations. In case of `HTTP URLs`, this will perform HTTP POST.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     URI xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The URI is `turned into URL` and then follows the handling of `URL`. See above.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     String xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The string is first interpreted as an absolute `URI`. If it's not `a valid absolute URI`, then it's interpreted as a `File`
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     OutputStream xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The XML will be sent to the given `OutputStream`. Upon a successful completion, the stream will be closed by this method.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     Writer xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The XML will be sent as a character stream to the given `Writer`. Upon a successful completion, the stream will be closed by this method.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

    - #### marshal

          public static void marshal(Object jaxbObject,
                                     Result xml)

      Writes a Java object tree to XML and store it to the specified location.
      Parameters:
        `jaxbObject` - The Java object to be marshalled into XML. If this object is a `JAXBElement`, it will provide the root tag name and the body. If this object has `XmlRootElement` on its class definition, that will be used as the root tag name and the given object will provide the body. Otherwise, the root tag name is `infered` from `the short class name`. This parameter must not be null.
        `xml` - The XML will be sent to the `Result` object.
      Throws:
        `DataBindingException` - If the operation fails, such as due to I/O error, unbindable classes.

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.