- XStream - Home
- XStream - Overview
- XStream - Environment Setup
- XStream - First Application
- XStream - Annotations
- XStream - Object Streams
- XStream - JSON
XStream - Aliasing
- XStream - Aliasing
- XStream - Class Aliasing
- XStream - Field Aliasing
- XStream - Implicit Collections Aliasing
- XStream - Attribute Aliasing
- XStream - Package Aliasing
XStream - Converters
XStream Resources
XStream - Object Streams
XStream provides alternative implementations of java.io.ObjectInputStream and java.io.ObjectOutputStream so that streams of objects can be serialized or deserialized from XML. This is particularly useful when large sets of objects are to be processed, keeping one object in memory at a time.
Syntax: createObjectOutputStream()
ObjectOutputStream objectOutputStream = xstream.createObjectOutputStream(
new FileOutputStream("test.txt"));
Syntax: createObjectInputStream()
ObjectInputStream objectInputStream = xstream.createObjectInputStream(
new FileInputStream("test.txt"));
Example - Usage of object streams
Let us now test the code with object streams in XStream.
XStreamDemo.java
package com.tutorialspoint.xml;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.io.xml.StaxDriver;
import com.thoughtworks.xstream.security.AnyTypePermission;
public class XStreamDemo {
public static void main(String args[]) {
XStreamDemo tester = new XStreamDemo();
XStream xstream = new XStream(new StaxDriver());
xstream.addPermission(AnyTypePermission.ANY);
xstream.autodetectAnnotations(true);
Student student1 = new Student("Mahesh","Parashar");
Student student2 = new Student("Suresh","Kalra");
Student student3 = new Student("Ramesh","Kumar");
Student student4 = new Student("Naresh","Sharma");
try {
ObjectOutputStream objectOutputStream = xstream.createObjectOutputStream(
new FileOutputStream("test.txt"));
objectOutputStream.writeObject(student1);
objectOutputStream.writeObject(student2);
objectOutputStream.writeObject(student3);
objectOutputStream.writeObject(student4);
objectOutputStream.writeObject("Hello World");
objectOutputStream.close();
ObjectInputStream objectInputStream = xstream.createObjectInputStream(
new FileInputStream("test.txt"));
Student student5 = (Student)objectInputStream.readObject();
Student student6 = (Student)objectInputStream.readObject();
Student student7 = (Student)objectInputStream.readObject();
Student student8 = (Student)objectInputStream.readObject();
String text = (String)objectInputStream.readObject();
System.out.println(student5);
System.out.println(student6);
System.out.println(student7);
System.out.println(student8);
System.out.println(text);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
@XStreamAlias("student")
class Student {
private String firstName;
private String lastName;
public Student(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
public String getFirstName() {
return firstName;
}
public String getLastName() {
return lastName;
}
public String toString() {
return "Student [ firstName: "+firstName+", lastName: "+ lastName+ " ]";
}
}
Output
Verify the output as follows −
Student [ firstName: Mahesh, lastName: Parashar ] Student [ firstName: Suresh, lastName: Kalra ] Student [ firstName: Ramesh, lastName: Kumar ] Student [ firstName: Naresh, lastName: Sharma ] Hello World
Look at the content of the test.txt present at C:\>XStream_WORKSPACE\com\tutorialspoint\xstream folder.
<?xml version = "1.0" ?>
<object-stream>
<student>
<firstName>Mahesh</firstName>
<lastName>Parashar</lastName>
</student>
<student>
<firstName>Suresh</firstName>
<lastName>Kalra</lastName>
</student>
<student>
<firstName>Ramesh</firstName>
<lastName>Kumar</lastName>
</student>
<student>
<firstName>Naresh</firstName>
<lastName>Sharma</lastName>
</student>
<string>Hello World</string>
</object-stream>
Advertisements