Tuesday, May 29, 2012

XML Serialization With XStream

XML Serialization is essential in some situations. Most probably we may use XML serialization when we need higher level of portability. XStream is a great library for xml serialization.
Serializing

import com.thoughtworks.xstream.XStream;

import model.TestCase;
import model.TestStep;
import model.TestSuite;


public class XStreamSerializeDemo {

 /**
  * @param args
  */
 public static void main(String[] args) {
  TestStep tstp1=new TestStep();
  tstp1.setId(1);
  tstp1.setName("Enter unamex on username");
  TestStep tstp2=new TestStep();
  tstp2.setId(1);
  tstp2.setName("Enter passwd on password");
  TestStep tstp3=new TestStep();
  tstp3.setId(1);
  tstp3.setName("Click on login button");
  
  TestCase tc=new TestCase();
  tc.setName("User Login");
  tc.getTestSteps().add(tstp1);
  tc.getTestSteps().add(tstp2);
  tc.getTestSteps().add(tstp3);
  
  TestCase tc1=new TestCase();
  tc1.setName("Fill dummy Vals");
  tc1.getTestSteps().add(tstp1);
  tc1.getTestSteps().add(tstp2);
  
  TestSuite ts=new TestSuite();
  ts.setName("Test Suite 1");
  ts.getTestCases().add(tc);
  ts.getTestCases().add(tc1);
  
  //initializing the serializer
  XStream xstream=new XStream();
  
  //mapping part *not essential
  xstream.alias("testcase", TestCase.class);
  xstream.alias("teststep", TestStep.class);
  xstream.alias("testsuite", TestSuite.class);
  
  String xml=xstream.toXML(ts);
  
  System.out.println(xml);
 }

} 
 
Deserializing
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;

import model.TestCase;
import model.TestStep;
import model.TestSuite;

import com.thoughtworks.xstream.XStream;


public class XStreamDeserializeDemo {

 /**
  * @param args
  * @throws FileNotFoundException 
  */
 public static void main(String[] args) throws FileNotFoundException {
  XStream xstream=new XStream();
  //mapping part *not essential
  xstream.alias("testcase", TestCase.class);
  xstream.alias("teststep", TestStep.class);
  xstream.alias("testsuite", TestSuite.class);
  
  //TestSuite ts=(TestSuite) xstream.fromXML("xml string goes here");
  FileInputStream fin=new  FileInputStream(new File("C:\\Users\\kanishkad\\Desktop\\output.xml"));
  TestSuite ts=new TestSuite();
  ts=(TestSuite) xstream.fromXML(fin,ts);
  
  System.out.println(ts.getTestCases().get(0).getTestSteps().get(0).getName());
 }

}

Serialized object :

<testsuite>
  <name>Test Suite 1</name>
  <testCases>
    <testcase>
      <name>User Login</name>
      <testSteps>
        <teststep>
          <name>Enter unamex on username</name>
          <id>1</id>
        </teststep>
        <teststep>
          <name>Enter passwd on password</name>
          <id>1</id>
        </teststep>
        <teststep>
          <name>Click on login button</name>
          <id>1</id>
        </teststep>
      </testSteps>
    </testcase>
    <testcase>
      <name>Fill dummy Vals</name>
      <testSteps>
        <teststep reference="../../../testcase/testSteps/teststep"/>
        <teststep reference="../../../testcase/testSteps/teststep[2]"/>
      </testSteps>
    </testcase>
  </testCases>
</testsuite>
 
© Copyright 2035 kani.stack.notez
Theme by Yusuf Fikri