Unmarshalling using Castor
Unmarshallingisthereverseprocess,buildinganobject(i.eJavaObject)fromanXMLrepresentation(i.eschema).
Step1:
Gettheschemafilewhichneedtobeunmarshalled.
Fore.gInourcasewehaveemployees.xsd
<?xml version="1.0" encoding="ISO-8859-1"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="age" type="xsd:string"/> <xsd:element name="dept" type="xsd:string"/> <xsd:element name="employee"> <xsd:complexType> <xsd:sequence> <xsd:element ref="name"/> <xsd:element ref="age"/> <xsd:element ref="dept"/> <xsd:element ref="project"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="optional"/> </xsd:complexType> </xsd:element> <xsd:element name="employees"> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="1" ref="employee"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="fname" type="xsd:string"/> <xsd:element name="lname" type="xsd:string"/> <xsd:element name="name"> <xsd:complexType> <xsd:sequence> <xsd:element ref="fname"/> <xsd:element ref="lname"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="project" type="xsd:string"/> </xsd:schema>
Step2:
WriteaJavaProgramtounmarshallXMlrepresentationtoObject
Note:TorunJavaProgram,castor-0.9.9.1.jar,xerces.jarandcommon-logging.jarinprojectbuildpath.
import org.exolab.castor.builder.SourceGenerator; public class UnmarshallTest { public void unMarshallTest() { try { // instantiate the SourceGenerator SourceGenerator srcGen = new SourceGenerator(); // call the generateSource method to generate the Object-Model from the // the schema and put it in a package srcGen.generateSource("employees.xsd", "com.ibm.employee"); System.out.println("Completed.."); } catch(Exception e) { System.out.println(e.toString()); } } public static void main(String[] args) { UnmarshallTest test = new UnmarshallTest(); test.unMarshallTest(); } }