XStream — Java Object to XML and XML to Java Object | Code Factory

package com.codeFactory;import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import javax.xml.parsers.DocumentBuilderFactory;import org.apache.commons.io.IOUtils;
import org.w3c.dom.Document;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.hibernate.converter.HibernatePersistentCollectionConverter;
import com.thoughtworks.xstream.hibernate.converter.HibernatePersistentMapConverter;
import com.thoughtworks.xstream.hibernate.converter.HibernatePersistentSortedMapConverter;
import com.thoughtworks.xstream.hibernate.converter.HibernatePersistentSortedSetConverter;
import com.thoughtworks.xstream.hibernate.converter.HibernateProxyConverter;
import com.thoughtworks.xstream.hibernate.mapper.HibernateMapper;
import com.thoughtworks.xstream.mapper.MapperWrapper;
/**
* @author code.factory
*
*/
public final class XStreamTranslator {

private XStream xstream = null;
private XStreamTranslator() {
xstream = new XStream();
xstream.ignoreUnknownElements();
}
/**
* Convert Object to a XML String
*
* @param object
* @return String
*/
public String toXMLString(Object object) {
return xstream.toXML(object);
}
/**
* Convert xml String to an Object
*
* @param xml
* @return Object
*/
public Object toObject(String xml) {
return (Object) xstream.fromXML(xml);
}
/**
* Returns an Object from File
*
* @param xmlFile
* @return Object
* @throws IOException
*/
public Object toObject(File xmlFile) throws IOException {
return xstream.fromXML(new FileReader(xmlFile));
}
/**
* Create File from the Object
*
* @param objTobeXMLTranslated
* @param fileName
* @throws IOException
*/
public void toXMLFile(Object objTobeXMLTranslated, String fileName)
throws IOException {
FileWriter writer = new FileWriter(fileName);
xstream.toXML(objTobeXMLTranslated, writer);
writer.close();
}
/**
* Create File from the Object, File name is generated automatically
*
* @param objTobeXMLTranslated
* @throws IOException
*/
public void toXMLFile(Object objTobeXMLTranslated) throws IOException {
toXMLFile(objTobeXMLTranslated, objTobeXMLTranslated.getClass().getName() + ".xml");
}
/**
* Create Document from String
*
* @param input
* @return Document
* @throws Exception
*/
public Document readFromXml(String input) throws Exception {
try {
return DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(IOUtils.toInputStream(input));
} catch (Exception e) {
throw new Exception("Exception occured while converting input String into document", e);
}
}
/**
* Create String from Object, Initialize Java Object and create XML
*
* @param objectToWrite
* @return
*/
public String initializeAndWriteToXml(Object objectToWrite) {
final XStream xstream = new XStream() {
@Override
protected MapperWrapper wrapMapper(final MapperWrapper next) {
return new HibernateMapper(next);
}
};

xstream.registerConverter(new HibernateProxyConverter());
xstream.registerConverter(new HibernatePersistentCollectionConverter(xstream.getMapper()));
xstream.registerConverter(new HibernatePersistentMapConverter(xstream.getMapper()));
xstream.registerConverter(new HibernatePersistentSortedMapConverter(xstream.getMapper()));
xstream.registerConverter(new HibernatePersistentSortedSetConverter(xstream.getMapper()));
return xstream.toXML(objectToWrite);
}
/**
* Create Object from String and targeted Object
*
* @param xmlContent
* @param targetObjectClass
* @return T
*/
public <T> T readFromXml(String xmlContent, Class<T> targetObjectClass) {
return targetObjectClass.cast(xstream.fromXML(xmlContent));
}
/**
* Java main method
*
* @param args
* @throws Exception
*/
public static void main(String... args) throws Exception {
String xmlString;
Employee xmlEmployee;
XStreamTranslator xStreamTranslator = new XStreamTranslator();

xmlString = xStreamTranslator.toXMLString(new Employee());
System.out.println(xmlString);

xmlEmployee = (Employee) xStreamTranslator.toObject(xmlString);
System.out.println(xmlEmployee);

System.out.println(xStreamTranslator.toObject(new File("XmlFile.xml")));

xStreamTranslator.toXMLFile(xmlEmployee, "XmlFile1.xml");

xStreamTranslator.toXMLFile(xmlEmployee);

System.out.println(xStreamTranslator.readFromXml(xmlString).getFirstChild().getTextContent());

System.out.println(xStreamTranslator.initializeAndWriteToXml(xmlEmployee)); // new Employee()

System.out.println(xStreamTranslator.readFromXml(xmlString, Employee.class));
}
}
package com.codeFactory;/**
* @author code.factory
*
*/
public class Employee {
String name;
public Employee() {
name = "Code Factory";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Employee [name : " + name + "]";
}
}
<?xml version="1.0" encoding="UTF-8"?>
<com.codeFactory.Employee>
<name>Hello Code Factory</name>
</com.codeFactory.Employee>

--

--

--

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

I, Twitter Bot

Why REST APIs Are Not Lean

How do I participate in the PreSale Dendy Metaverse at PinkSale on the Polygon Network?

Demystifying Scala Eager Lazy Memoized — How Cats Eval Can Save Your Recursive Stack From Overflow

Creating My First Web App with Django

Best Security Practices for Amazon RDS with Sequelize

Eventual vs Strong Consistency in Distributed Databases

The Elektron Digitakt ‘Timestretching’ Trick (And How it Works)

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Code Factory

Code Factory

More from Medium

Merge or Split PowerPoint Presentations in Java

Java Virtual Machine

Functional Interfaces in Java

Features of Java 8 to 18