Generate Java class from XML Schema using JAXB ‘xjc’ command

In the previous examples provided here and here, we saw how to generate XML Schema from Java classes using ‘schemagen’ command line tool and in Eclipse IDE. Now we will see how to do the reverse (i.e.) generate Java classes from XML Schema. This is done using JAXB binding compiler ‘xjc’ command.

Environment Used:

  • JDK 6 (Java SE 6) or later.
  • JAXB 2.1 API

Introduction

Before using JAXB to create or access an XML document from Java application, we have to do the following steps:

  1. Binding the schema
    • Binding a schema means generating a set of Java classes that represents the schema for the XML document (Schema is not required for simple marshalling and unmarshalling).
  2. Marshal the content tree /Unmarshal the XML document.
    • After binding the schema, you can convert Java objects to and from XML document.

In this example we will see how to bind the schema. For that, we use Java Architecture for XML Binding (JAXB) binding compiler tool, xjc, to generate Java classes from XML schema.

Process JDK Tool
From XML schema -> Java source file(s) (i.e.) XSD -> Java xjc

‘xjc’ Command Line Options

Usage:

xjc [-options …] … [-b ] …
If dir is specified, all schema files in it will be compiled.
If jar is specified, /META-INF/sun-jaxb.episode binding file will be compiled.

Complete list of options for ‘xjc’ is available in the help option.

xjc -help

Generate Java classes using ‘xjc’

Follow the steps below to generate a set of Java source files from XML schema.

  1. Create a new Java project folder and name it as “JAXBXJCTool”.
  2. Create a new XSD file and name it as “employee.xsd” and copy the following lines. This is the XML schema in our example which is to be bound to java classes.
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
      <xs:element name="employee" type="employee"/>
    
      <xs:complexType name="employee">
        <xs:sequence>
          <xs:element name="name" type="xs:string" minOccurs="0"/>
          <xs:element name="salary" type="xs:double"/>
          <xs:element name="designation" type="xs:string" minOccurs="0"/>
          <xs:element name="address" type="address" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="id" type="xs:int" use="required"/>
      </xs:complexType>
    
      <xs:complexType name="address">
        <xs:sequence>
          <xs:element name="city" type="xs:string" minOccurs="0"/>
          <xs:element name="line1" type="xs:string" minOccurs="0"/>
          <xs:element name="line2" type="xs:string" minOccurs="0"/>
          <xs:element name="state" type="xs:string" minOccurs="0"/>
          <xs:element name="zipcode" type="xs:long"/>
        </xs:sequence>
      </xs:complexType>
    </xs:schema>
    
  3. Save the file.
  4. Create a new folder ‘src’ inside the project folder.
  5. In Windows open Command Prompt (Windows button + R and type cmd) or Terminal in Linux and go to the project folder (use cd command) where it exists in your machine and type the following command.

    C:\Users\iByteCode\Desktop\JAXBXJCTool>xjc -d src -p com.theopentutorials.jaxb.beans employee.xsd

    This will generate set of Java source files with appropriate annotation inside ‘src’ folder.

The complete folder structure after executing the above command is shown below.

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.