Monday, February 24, 2014

Generate java classes using xjc

Source : Generate java class from xml schema using jaxb xjc command


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.

‘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
  3. Employee.xsd

    <?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>
    
  4. Save the file
  5. Create a new folder ‘src’ inside the project folder.
  6. 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
  7. C:\Users\iByteCode\Desktop\JAXBXJCTool>xjc -d src -p com.theopentutorials.jaxb.beans employee.xsd
  8. This will generate set of Java source files with appropriate annotation inside ‘src’ folder



1 comment: