jaxb
http://docs.oracle.com/cd/E17802_01/webservices/webservices/docs/1.5/tutorial/doc/JAXBUsing.html
- With JAXB you can:
 - Generate JAXB Java classes from an XML schema
 - Use schema-derived JAXB classes to unmarshal and marshal XML content in a Java application
 - Create a Java content tree from scratch using schema-derived JAXB classes
 - Validate XML content during unmarshalling and at runtime
 - Customize JAXB schema-to-Java bindings
 
XSD data types
XSD type  | 
  Java type  | 
xsd:string  | 
  java.lang.String  | 
xsd:integer  | 
  java.math.BigInteger  | 
xsd:int  | 
  int  | 
xsd.long  | 
  long  | 
xsd:short  | 
  short  | 
xsd:decimal  | 
  java.math.BigDecimal  | 
xsd:float  | 
  float  | 
xsd:double  | 
  double  | 
xsd:boolean  | 
  boolean  | 
xsd:byte  | 
  byte  | 
xsd:QName  | 
  javax.xml.namespace.QName  | 
xsd:dateTime  | 
  javax.xml.datatype.XMLGregorianCalendar  | 
xsd:base64Binary  | 
  byte[]  | 
xsd:hexBinary  | 
  byte[]  | 
xsd:unsignedInt  | 
  long  | 
xsd:unsignedShort  | 
  int  | 
xsd:unsignedByte  | 
  short  | 
xsd:time  | 
  javax.xml.datatype.XMLGregorianCalendar  | 
xsd:date  | 
  javax.xml.datatype.XMLGregorianCalendar  | 
xsd:g  | 
  javax.xml.datatype.XMLGregorianCalendar  | 
xsd:anySimpleType  | 
  java.lang.Object  | 
xsd:anySimpleType  | 
  java.lang.String  | 
xsd:duration  | 
  javax.xml.datatype.Duration  | 
xsd:NOTATION  | 
  javax.xml.namespace.QName  | 
xjc command generation example
- cd /tmp
 - mkdir -p xjctest/xsd
 - cd xjctest
 
nano simple.xjb
<jaxb:bindings xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
           xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
           jaxb:extensionBindingPrefixes="xjc"
           jaxb:version="2.0">
  <jaxb:globalBindings generateValueClass="true">
    <xjc:simple />
    <xjc:serializable uid="12343"/> <!-- marks generated class as Serializable-->
    <jaxb:javaType name="java.util.Calendar" xmlType="xs:dateTime"
      parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime"
      printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
  </jaxb:globalBindings>
</jaxb:bindings>nano xsd/test.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="test" type="Test"/>                                                                                                                      
  <xs:complexType name="Test">                                                                                                                               
    <xs:sequence>                                                                                                                                            
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="birthDate" type="xs:dateTime" minOccurs="0"/>
      <xs:element name="dummyInt" type="xs:int" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>Run command
- xjc xsd/test.xsd -b simple.xjb -extension -npa
 
parsing a schema... compiling a schema... generated/ObjectFactory.java generated/Test.java org/w3/_2001/xmlschema/Adapter1.java
To generate a proper Date it might be necessary to use an adapter for xjb.
