MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 5 as of 2016-01-09 21:33:52
  • Java
  • jaxb

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

  • http://docs.oracle.com/javaee/5/tutorial/doc/bnazq.html

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==

  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01