Create an XML Schema of the XML Information that needs to be bound
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tst="http://www.test.org/" elementFormDefault="qualified"
targetNamespace="http://www.test.org/">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element ref="tst:child" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="child">
<xs:complexType>
<xs:attribute name="test" use="optional" default="false" type="xs:boolean"/>
</xs:complexType>
</xs:element>
</xs:schema>
If necessary; customise the binding behavior, either by annotating the XML Schema or by specifying this in an external file.
<jxb:bindings version="1.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<jxb:bindings schemaLocation="test.xsd" node="/xs:schema">
<jxb:globalBindings bindingStyle="elementBinding" choiceContentProperty="false"/>
<jxb:schemaBindings>
<jxb:package name="org.test"/>
</jxb:schemaBindings>
</jxb:bindings>
</jxb:bindings>
Create the Java Classes and Interfaces using the Binding Compiler (xjc).
java -jar jaxb\lib\jaxb-xjc.jar -extension -b test.jxb -d src -p org.test test.xsd
Compile the Java Classes and Interfaces.
javac -sourcepath src -d out *.java
Unmarshall a XML Document
JAXBContext context = JAXBContext.newInstance( "test.jaxb"); Unmarshaller unmarshaller = context.createUnmarshaller(); Collection result = (Collection)unmarshaller.unmarshal( new File( "input.xml"));
Marshall Java Objects to XML
Marshaller marshaller = context.createMarshaller(); marshaller.marshal( result, new FileOutputStream( "output.xml"));