Spring OXM + XStream Integration Example with XStreamMarshaller

By Arvind Rai, March 07, 2023
On this page, we will learn Spring OXM and XStream integration example with XStreamMarshaller.
1. Spring provides XStreamMarshaller API for XStream marshaling and unmarshaling of XML.
2. By default, XStreamMarshaller can be used without any configuration and we do not require any mapping for it. It can marshal any class in classpath.

Technologies Used

Find the technologies being used in our example.
1. Java
2. Eclipse
3. Gradle
4. Spring OXM

Gradle File

Find the Gradle file to resolve JAR dependencies.
build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'
archivesBaseName = 'concretepage'
version = '1' 
repositories {
    mavenCentral()
}
dependencies {
	compile 'org.springframework.boot:spring-boot-starter:1.2.2.RELEASE'
	compile 'org.springframework:spring-oxm:4.1.5.RELEASE'
	compile 'com.thoughtworks.xstream:xstream:1.4.8'
}  

Configuration Class

AppConfig.java
package com.concretepage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.oxm.xstream.XStreamMarshaller;
import com.concretepage.bean.Company;
@Configuration
public class AppConfig {
	@Bean
	public XStreamMarshaller getXStreamMarshaller() {
	  XStreamMarshaller xstreamMarshaller = new XStreamMarshaller();
	  xstreamMarshaller.setSupportedClasses(Company.class);
          return xstreamMarshaller;
	}
} 

Java Class to be Converted To/From XML

Find a Java class which will be converted into XML. We will use same XML to convert it into Java object.
Company.java
package com.concretepage.bean;
public class Company {
	private Integer id;
	private String companyName;
	private String ceoName;
	private Integer noEmp;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getCompanyName() {
		return companyName;
	}
	public void setCompanyName(String companyName) {
		this.companyName = companyName;
	}
	public String getCeoName() {
		return ceoName;
	}
	public void setCeoName(String ceoName) {
		this.ceoName = ceoName;
	}
	public Integer getNoEmp() {
		return noEmp;
	}
	public void setNoEmp(Integer noEmp) {
		this.noEmp = noEmp;
	}
} 

Run Application

To test our application, we are creating an object of our Java bean and calling marshal() method of XStreamMarshaller and we get a XML file as country.xml. Now this XML file is converted into Java class using unmarshal() method of XStreamMarshaller.
RunApplication.java
package com.concretepage;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.oxm.xstream.XStreamMarshaller;
import com.concretepage.bean.Company;
public class RunApplication {
	public static void main(String[] args) throws IOException {
	   AnnotationConfigApplicationContext ctx = new AnnotationConfigApplicationContext();
	   ctx.register(AppConfig.class);
	   ctx.refresh();
	   XStreamMarshaller xstream = ctx.getBean(XStreamMarshaller.class);
	   //Perform Marshaling
	   Company company = new Company();
	   company.setId(100);
	   company.setCompanyName("PQR");
	   company.setCeoName("MNO");
	   company.setNoEmp(50);
	   xstream.marshal(company, new StreamResult(new FileOutputStream("country.xml")));
	   System.out.println("Marshaling completed.");
	   //Perform UnMarshaling
	   company = (Company)xstream.unmarshal(new StreamSource(new FileInputStream("country.xml")));
	   System.out.println("After UnMarshaling Data is: id:"+ company.getId()+", CountryName:"+company.getCompanyName());
	}
} 
Find the output for Java object to XML.
<com.concretepage.bean.Company><id>100</id><companyName>PQR</companyName><ceoName>MNO</ceoName><noEmp>50</noEmp></com.concretepage.bean.Company>
 
Find the output for XML to Java Object.
Marshaling completed.
After UnMarshaling Data is: id:100, CountryName:PQR 

References

Download Source Code

POSTED BY
ARVIND RAI
ARVIND RAI
LEARN MORE








©2024 concretepage.com | Privacy Policy | Contact Us