Thursday, October 16, 2014

How to create Java Classes using xjc from XML file

This tutorial will demonstrate how can you generate Java Objects from XML documents using xjc tool. The tool “xjc” is used to generate the annotated Java classes from the XSD schema

Suppose I am using below XML file to generate Java Objects i,e
<?xml version="1.0" encoding="UTF-8"?>
<adaptorapp id="application">
<instance id="instance1">
<connectiondetails>
<accesskey>abcde</accesskey>
<secretkey>fghij</secretkey>
</connectiondetails>
</instance>
<instance id="instance2">
<connectiondetails>
<accesskey>klmnop</accesskey>
<secretkey>qrstuvwxyz</secretkey>
</connectiondetails>
</instance>
</adaptorapp>
Now  to generate Java Objects we need to create one xsd file(say "connection.xsd") :
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="adaptorapp" type="AdaptopApp" />
<xs:complexType name="AdaptopApp">
<xs:sequence>
<xs:element name="instance" type="Instance" maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="Instance">
<xs:sequence>
<xs:element name="connectiondetail" type="ConnectionDetail" />
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required" />
</xs:complexType>
<xs:complexType name="ConnectionDetail">
<xs:sequence>
<xs:element name="accesskey" type="xs:string" />
<xs:element name="secretkey" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:schema>
I have written XSD Schema based on my XML file, You can write something similar according to your requirement.

Lets use the 'xjc" tool to generate corresponding Java classes
                xjc.exe connection.xsd
By default, It will generates the Java classes in a directory named "generated".


Please let me know your feedback/queries as comments.