English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Spring and Castor example

With CastorMarshaller Class, we can use Castor to serialize Java objects to xml, and vice versa. It is the implementation class of Marshaller and Unmarshaller interfaces. By default, no other configuration is required.

Example of Spring and Castor integration (serializing Java objects to XML)

You need to create the following files to serialize Java objects to XML using Spring with Castor:

Employee.java applicationContext.xml mapping.xml Client.java

Required jar files

To run this example, you need to load:

Spring Core jar file Spring Web jar file castor-1.3.jar castor-1.3-core.jar

Download all the jar files of Spring, including core, web, aop, mvc, j2ee, remoting, oxm, jdbc, orm, etc.

Download castor-1.3.jar

Download castor -1.3-core.jar


Employee.java

If setter and getter definitions are used, three properties id, name, and salary are defined.

package com.w;3codebox;
public class Employee {
private int id;
private String name;
private float salary;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public float getSalary() {
    return salary;
}
public void setSalary(float salary) {
    this.salary = salary;
}
}

applicationContext.xml

It defines a Bean named castorMarshallerBean, where the Employee class is bound to the OXM framework.

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<bean id="castorMarshallerBean" class="org.springframework.oxm.castor.CastorMarshaller">
        <property name="targetClass" value="com.w3codebox.Employee"></property>
        <property name="mappingLocation" value="mapping.xml"></property>
    </bean>
</beans>

mapping.xml

<?xml version="1.0">
<!DOCTYPE mapping public "-//EXOLAB/EXOLAB 1Castor Mapping DTD Version//.0
                         EN"//"http:/castor.org
 mapping.dtd">
    <mapping>3<class name="com.w-codebox.Employee" auto
        complete="true" >-<map-to xml="Employee" ns//www.w3uri="http:-codebox.com" ns/prefix="dp"
        >
            <bind-<field name="id" type="integer">/bind-xml>
        </field>
        <field name="id" node="attribute"><
            <bind-<field name="name">/bind-xml>
        </field>
        <field name="salary">
            <bind-<bind xml name="salary" type="float"></bind-xml>
        </field>
        
    </class>
    
 </mapping>

Client.java

It retrieves the instance of Marshaller from the applicationContext.xml file and calls the marshal method.

package com.w;3codebox;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.oxm.Marshaller;
public class Client{
 public static void main(String[] args) throws IOException{
  ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  Marshaller marshaller = (Marshaller)context.getBean("castorMarshallerBean");
        
  Employee employee = new Employee();
  employee.setId(101);
  employee.setName("Sonoo Jaiswal");
  employee.setSalary(100000);
        
  marshaller.marshal(employee, new StreamResult(new FileWriter("employee.xml")));
  
  System.out.println("XML Created Successfully");
 }
}

Example Output

employee.xml

<?xml version="1.0" encoding="UTF-8"?>
dp:Employee xmlns:dp="http://www.oldtoolbag.com" id="101>
<dp:name>Sonoo Jaiswal</dp:name>
<dp:salary>100000.0</dp:salary>
</dp:Employee>