`

使用XStream是实现XML与Java对象的转换(5)--Object Stream

阅读更多

八,Object Stream

 之前的例子我们都是直接输出Xml成为String类型或者从String中获得并解析Xml,现在我们要处理输入流和输出流!

1,输出流(ObjectOutputStream)

输出流测试程序如下:

package cn.tjpu.zhw.xml.xstream5;
 
import java.io.IOException;
import java.io.ObjectOutputStream;
 
import com.thoughtworks.xstream.XStream;
 
public class OutMain {
 
   public static void main(String[] args) throws IOException {
      //创建XStream对象
      XStream xstream = new XStream();
     
      /*******1,序列化单个对象*******/
      System.out.println("*******1,序列化单个对象*******");
      xstream.toXML(new Person("张三"), System.out);
     
      System.out.println();
      System.out.println();
     
      /*******2,序列化一组对象*******/
      System.out.println("*******2,序列化一组对象*******");
      //将格式化后的xml输出到System.out中,root是根节点
      ObjectOutputStream oos = xstream.createObjectOutputStream(System.out,"root");
      oos.writeObject(new Person("张三"));
      oos.writeObject(new Person("李四"));
      oos.writeObject(new Integer(1));
      oos.writeObject(2);
      oos.writeObject(new Double(3));
      oos.writeObject(4d);
      oos.writeObject('c');
      oos.writeObject("这是一堆字符串!");
      //一定要关闭流
      oos.close();
   }
}
 
class Person {
   public Person(String name){
      this.name = name;
   }
   private String name;
 
   public String getName() {
      return name;
   }
 
   public void setName(String name) {
      this.name = name;
   }
 
   public String toString() {
      return "Person对象的name="+getName();
   }
}

 

 

运行结果:

*******1,序列化单个对象*******
<cn.tjpu.zhw.xml.xstream5.Person>
  <name>张三</name>
</cn.tjpu.zhw.xml.xstream5.Person>
 
*******2,序列化一组对象*******
<root>
  <cn.tjpu.zhw.xml.xstream5.Person>
    <name>张三</name>
  </cn.tjpu.zhw.xml.xstream5.Person>
  <cn.tjpu.zhw.xml.xstream5.Person>
    <name>李四</name>
  </cn.tjpu.zhw.xml.xstream5.Person>
  <int>1</int>
  <int>2</int>
  <double>3.0</double>
  <double>4.0</double>
  <char>c</char>
  <string>这是一堆字符串!</string>
</root>

 

 上面两个例子都是直接使用System.out,将XML输出到控制台。其实我们可以将其替换成我们喜欢的任何输出流,比如FileWriter等。

2,输入流(ObjectInputStream)

将如下内容写入D:/temp1.xml文件:

<cn.tjpu.zhw.xml.xstream5.Person>
  <name>张三</name>
</cn.tjpu.zhw.xml.xstream5.Person>

 

 

将如下内容写入D:/temp2.xml文件:

<root>
  <cn.tjpu.zhw.xml.xstream5.Person>
    <name>张三</name>
  </cn.tjpu.zhw.xml.xstream5.Person>
  <cn.tjpu.zhw.xml.xstream5.Person>
    <name>李四</name>
  </cn.tjpu.zhw.xml.xstream5.Person>
  <int>1</int>
  <int>2</int>
  <double>3.0</double>
  <double>4.0</double>
  <char>c</char>
  <string>这是一堆字符串!</string>
</root>

 

 

输入流测试程序如下:

package cn.tjpu.zhw.xml.xstream5;
 
import java.io.EOFException;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.ObjectInputStream;
 
import com.thoughtworks.xstream.XStream;
 
public class InMain {
 
   public static void main(String[] args) throws IOException, ClassNotFoundException {
     
      //创建XStream对象
      XStream xstream = new XStream();
     
      /*******1,反序列化一个对象*******/
      FileReader reader1 = new FileReader(new File("D:/temp1.xml"));
      Person pp = (Person)xstream.fromXML(reader1);
      System.out.println("*******1,反序列化一个对象*******");
      System.out.println("pp="+pp);
     
     
      System.out.println();
      System.out.println();
     
      /*******1,反序列化一组对象*******/
      FileReader reader2 = new FileReader(new File("D:/temp2.xml"));
      ObjectInputStream ois = xstream.createObjectInputStream(reader2);
     
      Person p1 = (Person)ois.readObject();
      System.out.println("p1="+p1);
     
      Person p2 = (Person)ois.readObject();
      System.out.println("p2="+p2);
     
      int i1 = (Integer)ois.readObject();
      System.out.println("i1="+i1);
     
      int i2 = (Integer)ois.readObject();
      System.out.println("i2="+i2);
     
      double d1 = (Double)ois.readObject();
      System.out.println("d1="+d1);
     
      double d2 = (Double)ois.readObject();
      System.out.println("d2="+d2);
     
      char ch = (Character)ois.readObject();
      System.out.println("ch="+ch);
     
      String str = (String)ois.readObject();
      System.out.println("str="+str);
     
      System.out.println("******异常捕获******");
      //发生异常
      try {
        ois.readObject();
      } catch (EOFException e) {
        System.out.println("因为已经没有数据了,再次读取时,就会发生EOFException异常");
      }
   }
 
}

 

运行结果:

 

*******1,反序列化一个对象*******
pp=Person对象的name=张三
 
 
p1=Person对象的name=张三
p2=Person对象的name=李四
i1=1
i2=2
d1=3.0
d2=4.0
ch=c
str=这是一堆字符串!
******异常捕获******
因为已经没有数据了,再次读取时,就会发生EOFException异常

 

2
0
分享到:
评论
2 楼 wr665109 2014-05-22  
挺不错,讲解很详细
1 楼 kongxuan 2013-12-27  
这玩意效率不高,对于高并发应用不合适。

相关推荐

    使用XStream是实现XML与Java对象的转换(6)--持久化

    这篇博客“使用XStream是实现XML与Java对象的转换(6)--持久化”深入探讨了如何利用XStream进行持久化操作,使得对象状态能够持久保存到磁盘,同时也能够从XML文档中恢复。 首先,我们需要理解XStream的核心概念。...

    使用XStream是实现XML与Java对象的转换(3)--注解

    在“xstream使用3”这个压缩包文件中,可能包含了使用XStream注解实现XML与Java对象转换的示例代码、测试用例以及相关的说明文档。通过对这些文件的深入学习,开发者可以更好地理解如何在实际项目中运用XStream的...

    使用XStream是实现XML与Java对象的转换(4)--转换器

    XStream是一个强大的库,专门用于XML与Java对象之间的互相转换。这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而...

    xStream 实现xml与 java对象的转换

    【标题】:“xStream 实现xml与 java对象的转换” 在Java开发中,XML作为一种常见的数据交换格式,常用于存储和传输数据。然而,XML与Java对象之间的转换并不总是直观和简便的。这时,xStream库应运而生,它提供了...

    xstream轻松解析xml到java对象

    以下是一个简单的示例,演示如何使用XStream进行XML与Java对象的转换: ```java import com.thoughtworks.xstream.XStream; class User { private String name; private int age; // getters and setters ...

    xml解析及使用XStream实现javaBean与xml之间的转换

    在`xmlAnalysis`文件夹中,可能包含了一个简单的Java程序,演示了如何使用DOM、SAX、StAX和XStream解析XML文件,并展示了XStream如何在JavaBean与XML之间进行转换。你可以运行这些代码,观察输出结果,以加深理解。...

    好用的xStream XML和JAVA对象互相转换的简单示例

    然而,将XML与Java对象直接对应起来操作可以大大简化编程工作,这就是XStream库的作用所在。XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的...

    XStream测试Demo-xml与java对象的相互转换

    这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在本文中,我们将深入探讨XStream的工作原理、使用方法以及其在实际开发中的应用。 首先,XStream的核心功能是...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    本篇将详细介绍XStream如何处理XML与Java对象的相互转换,以及如何处理List、Map等集合类型的数据。 首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java...

    使用xstream进行java类与xml文件互转解析--代码

    为了将一个Java对象转换成XML,首先需要创建该对象实例,然后使用XStream的`toXML()`方法: ```java import com.thoughtworks.xstream.XStream; public class Person { private String name; private int age; ...

    使用XStream, java Object 与xml之间的转换,以及写入SD卡

    总之,XStream提供了一种直观且易于使用的机制来处理Java对象与XML之间的转换。结合Android的文件操作,我们可以方便地将数据序列化后存储到外部存储中,以便于后续读取和使用。通过熟练掌握XStream,开发者可以更...

    xstream对象与xml转换

    在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...

    Xstream_java对象和xml的互相转换

    `xstream-1.3.1.jar` 是 XStream 库本身,包含了所有必要的类和方法来实现对象与 XML 的转换。而 `xpp3_min-1.1.4c.jar` 是一个解析器库,XStream 使用它来解析 XML 输入,这是 XStream 默认使用的解析器之一。 ...

    XStream实现Object与XML转换解决方案

    标题中的“XStream实现Object与XML转换解决方案”指的是一个Java库——XStream,它提供了一种简单的方法来序列化和反序列化Java对象到XML,反之亦然。这个库广泛用于将程序数据保存到XML文件或者从XML数据恢复对象,...

    Java用xStream拼接xml

    xStream简化了Java对象与XML之间的转换,使得在处理XML数据时,开发者无需关注底层的XML构造细节。在Web Service接口对接时,如果需要传递XML内容,使用xStream可以高效、便捷地完成XML的拼接。通过合理配置和使用,...

    XStream在Java对象和XML之间相互转换

    XStream是一款强大的Java库,主要用于将Java对象序列...在实际开发中,XStream的简单性和灵活性使其成为处理Java对象与XML数据之间转换的首选工具。通过合理配置和使用,可以极大地提高开发效率并简化数据处理流程。

Global site tag (gtag.js) - Google Analytics