Spring OXM & JAXB
Spring OXM & XStream
Spring OXM & Castor
Spring OXM Useful Resources
Spring OXM - Update Project for Castor
We can use Castor instead of JAXB library to marshall/unmarshall an XML content. Castor is no more supported by Spring as it is not actively maintained for long time. This tutorial is written using older version of spring.
Update the content of pom.xml to have xstream dependencies as shown below −
pom.xml
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorialspoint</groupId>
<artifactId>springoxm</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Spring OXM</name>
<description>Spring OXM Project</description>
<properties>
<org.springframework.version>4.3.7.RELEASE</org.springframework.version>
<org.hibernate.version>5.2.9.Final</org.hibernate.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-oxm</artifactId>
<version>${org.springframework.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-core</artifactId>
<version>1.4.1</version>
</dependency>
<dependency>
<groupId>org.codehaus.castor</groupId>
<artifactId>castor-xml</artifactId>
<version>1.4.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Add a mapping xml required for castor mapping to map Student class as mappings.xml under src â main â resources folder as shown below.
mappings.xml
<?xml version="1.0"?>
<!DOCTYPE mapping PUBLIC "-//EXOLAB/Castor Mapping DTD Version 1.0//EN" "http://castor.org/mapping.dtd">
<mapping>
<class name="com.tutorialspoint.oxm.model.Student" auto-complete="true" >
<map-to xml="Student"/>
<field name="id" type="integer">
<bind-xml name="id" node="attribute"></bind-xml>
</field>
<field name="name">
<bind-xml name="name"></bind-xml>
</field>
<field name="age">
<bind-xml name="age" type="int"></bind-xml>
</field>
</class>
</mapping>
Update applicationcontext.xml in src â main â resources with the following content to use CastorMarshaller. CastorMarshaller object can be used for both marshalling and unmarshalling.
applicationcontext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:oxm="http://www.springframework.org/schema/oxm"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/oxm
http://www.springframework.org/schema/oxm/spring-oxm-3.0.xsd">
<bean id="castorMarshaller" class="org.springframework.oxm.castor.CastorMarshaller">
<property name="targetClass" value="com.tutorialspoint.oxm.model.Student"></property>
<property name="mappingLocation" value="mappings.xml"></property>
</bean>
</beans>
Advertisements