| 
  
   Size: 3664 
  
  Comment:  
 | 
  
   Size: 5314 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 88: | Line 88: | 
|  * mkdir -p /tmp/xjctest/src/main/resources '''nano pom.xml''' {{{ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.allowed.bitarus</groupId> <artifactId>xjctest</artifactId> <version>0.1.0</version> <build> <plugins> <plugin> <groupId>org.jvnet.jaxb2.maven2</groupId> <artifactId>maven-jaxb2-plugin</artifactId> <version>0.11.0</version> <executions> <execution> <goals> <goal>generate</goal> </goals> </execution> </executions> <configuration> <schemaDirectory>src/main/resources</schemaDirectory> <schemaIncludes> <include>*.xsd</include> </schemaIncludes> <bindingDirectory>src/main/resources</bindingDirectory> <bindingIncludes> <include>*.xjb</include> </bindingIncludes> </configuration> </plugin> </plugins> </build> </project> }}} * Copy test.xsd and and simple.xjb to /tmp/xjctest/src/main/resources * run mvn clean install  | 
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
- mkdir -p /tmp/xjctest/src/main/resources
 
nano pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.allowed.bitarus</groupId>
  <artifactId>xjctest</artifactId>
  <version>0.1.0</version>
    <build>
        <plugins>
            <plugin>
                <groupId>org.jvnet.jaxb2.maven2</groupId>
                <artifactId>maven-jaxb2-plugin</artifactId>
                <version>0.11.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>generate</goal>
                        </goals>                        
                    </execution>
                </executions>
                <configuration>
                        <schemaDirectory>src/main/resources</schemaDirectory>
                        <schemaIncludes>
                            <include>*.xsd</include>
                        </schemaIncludes>
                        <bindingDirectory>src/main/resources</bindingDirectory>
                        <bindingIncludes>
                            <include>*.xjb</include>
                        </bindingIncludes>                   
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>- Copy test.xsd and and simple.xjb to /tmp/xjctest/src/main/resources
 - run mvn clean install
 
