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.
== Generate with Maven==