Lets first get the xsd file from which we want to generate a java class:
1. Get the following xsd:
2. Open the command prompt and type xjc … if you get lots of messages that means you have xjc in it, otherwise you have to set it.
3. Generate the java class:
Let the xsd name above is bidding.xsd…Now in the command prompt type:
xjc -p com.vaani.generated -d src bidding.xsd
So xjc is our compiler, -p = package name…so our package name is com.vaani.generated
-d = src is the generated codes outputing directory name.
So the output is :
parsing a schema...
compiling a schema...
com\vaani\generated\Items.java
com\vaani\generated\ObjectFactory.java
com\vaani\generated\PurchaseOrderType.java
com\vaani\generated\USAddress.java
A factory class (ObjectFactory.java), consisting of methods to create instance objects, also gets generated.
See the eclipse project based on this.
1. Get the following xsd:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="purchaseOrder" type="PurchaseOrderType"/> <xsd:element name="comment" type="xsd:string"/> <xsd:complexType name="PurchaseOrderType"> <xsd:sequence> <xsd:element name="shipTo" type="USAddress"/> <xsd:element name="billTo" type="USAddress"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="items" type="Items"/> </xsd:sequence> <xsd:attribute name="orderDate" type="xsd:date"/> </xsd:complexType> <xsd:complexType name="USAddress"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> <xsd:element name="city" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="zip" type="xsd:decimal"/> </xsd:sequence> <xsd:attribute name="country" type="xsd:NMTOKEN" fixed="US"/> </xsd:complexType> <xsd:complexType name="Items"> <xsd:sequence> <xsd:element name="item" minOccurs="1" maxOccurs="unbounded"> <xsd:complexType> <xsd:sequence> <xsd:element name="productName" type="xsd:string"/> <xsd:element name="quantity"> <xsd:simpleType> <xsd:restriction base="xsd:positiveInteger"> <xsd:maxExclusive value="100"/> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name="USPrice" type="xsd:decimal"/> <xsd:element ref="comment" minOccurs="0"/> <xsd:element name="shipDate" type="xsd:date" minOccurs="0"/> </xsd:sequence> <xsd:attribute name="partNum" type="SKU" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <!-- Stock Keeping Unit, a code for identifying products --> <xsd:simpleType name="SKU"> <xsd:restriction base="xsd:string"> <xsd:pattern value="\d{3}-[A-Z]{2}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
2. Open the command prompt and type xjc … if you get lots of messages that means you have xjc in it, otherwise you have to set it.
3. Generate the java class:
Let the xsd name above is bidding.xsd…Now in the command prompt type:
xjc -p com.vaani.generated -d src bidding.xsd
So xjc is our compiler, -p = package name…so our package name is com.vaani.generated
-d = src is the generated codes outputing directory name.
So the output is :
parsing a schema...
compiling a schema...
com\vaani\generated\Items.java
com\vaani\generated\ObjectFactory.java
com\vaani\generated\PurchaseOrderType.java
com\vaani\generated\USAddress.java
A factory class (ObjectFactory.java), consisting of methods to create instance objects, also gets generated.
Taking a look at the generated classes :
package com.vaani.generated; // import java.math.BigDecimal; import javax.xml.bind.annotation.AccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.CollapsedStringAdapter; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; import primer.po.USAddress; @XmlAccessorType(AccessType.FIELD) @XmlType(name = "USAddress", propOrder = { "name", "street", "city", "state", "zip" }) public class USAddress { protected String name; protected String street; protected String city; protected String state; protected BigDecimal zip; @XmlAttribute @XmlJavaTypeAdapter(CollapsedStringAdapter.class) protected String country; public String getName() { return name; } public void setName(String value) { this.name = value; } public String getStreet() { return street; } public void setStreet(String value) { this.street = value; } public String getCity() { return city; } public void setCity(String value) { this.city = value; } public String getState() { return state; } public void setState(String value) { this.state = value; } public BigDecimal getZip() { return zip; } public void setZip(BigDecimal value) { this.zip = value; } public String getCountry() { if (country == null) { return "US"; } else { return country; } } public void setCountry(String value) { this.country = value; } }
See the eclipse project based on this.
No comments:
Post a Comment