Xstream 简明教程

XStream - Object Streams

XStream 提供了 java.io.ObjectInputStream 和 java.io.ObjectOutputStream 的替代实现,以便可以从 XML 序列化或反序列化对象流。当要处理大量对象集时,一次只保留一个对象在内存中时,这特别有用。

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"));

现在让我们用 XStream 中的对象流测试代码。

Let us now test the code with object streams in XStream.

在 C:\>XStream_WORKSPACE\com\tutorialspoint\xstream 中创建一个名为 XStreamTester 的 java 类文件。

Create a java class file named XStreamTester in C:\>XStream_WORKSPACE\com\tutorialspoint\xstream.

File: XStreamTester.java

package com.tutorialspoint.xstream;

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;

public class XStreamTester {
   public static void main(String args[]) {

      XStreamTester tester = new XStreamTester();
      XStream xstream = new XStream(new StaxDriver());

      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+ " ]";
   }
}

Verify the Result

使用以下 javac 编译器编译类:

Compile the classes using javac compiler as follows −

C:\XStream_WORKSPACE\com\tutorialspoint\xstream>javac XStreamTester.java

现在,运行 XStreamTester 以查看结果 −

Now run the XStreamTester to see the result −

C:\XStream_WORKSPACE\com\tutorialspoint\xstream>java XStreamTester

验证输出如下所示 −

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

查看 C:>XStream_WORKSPACE\com\tutorialspoint\xstream 文件夹中 test.txt 的内容。

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>