Although quite old, this file is still useful.
package com.ai.xml.jaxb20; import java.io.File; import java.util.*; import javax.xml.bind.*; public class XmlTest { private static JAXBContext jc = null; public static void main(String[] args) { try { //Create a java object Content c = createContent(); //Establish a jaxb context System.out.println("Establish the context"); jc = JAXBContext.newInstance(c.getClass()); //jc = JAXBContext.newInstance("com.ai.xml.jaxb20"); //Get a marshaller Marshaller m = jc.createMarshaller(); //Enable formatted xml output m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, new Boolean(true)); //Marshal to system output: java to xml m.marshal(c,System.out); //Read xml into a java object xmlToJava(jc); } catch (JAXBException x) { x.printStackTrace(); } }//eof-main public static void xmlToJava(JAXBContext jc) throws JAXBException { //Get an unmarshaller Unmarshaller um = jc.createUnmarshaller(); //Unmarshall the file into a content object Object o = um.unmarshal(new File("E:\\satya\\webapps\\jaxb20\\xml\\content.xml")); Content c = (Content)o; //Remarshal it to system.out to see what you have read Marshaller m = jc.createMarshaller(); m.marshal(c,System.out); } static public Content createContent() { Content c = new Content(); Folder f1 = new Folder("f1"); f1.addFile(new FileItem("f1","f1-de","f1-con")); f1.addFile(new FileItem("f2","f2-de","f2-con")); c.add(f1); return c; } }//eof-class