八,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异常
相关推荐
NULL 博文链接:https://forestqqqq.iteye.com/blog/1995092
NULL 博文链接:https://forestqqqq.iteye.com/blog/1993210
xstream轻松解析xml到java对象,内附样例。so easy!妈妈再也不用担心我的xml解析。
NULL 博文链接:https://forestqqqq.iteye.com/blog/1996974
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...
有jar包。在附件。全的,代码也有,,直接运行
XStream测试Demo-xml与java对象的相互转换
好用的xStream XML和JAVA对象互相转换的简单示例,内附依赖的xstream-1.3.1.jar和xpp3_min-1.1.4c.jar
使用xstream进行java类与xml文件互转解析
它可以将Java对象转换为XML文档,也可以将XML文档转换为Java对象。 pom引用 <groupId>com.thoughtworks.xstream</groupId> <artifactId>xstream <version>1.4.20 实体类和测试类详见博客 ...
xStream完美转换XML、JSON,包括XML转换成对象,以及对象转换成XML,以及对象转换成JSON,以及注意事项
一个小demo展示xml的两种解析方式和四种解析方法,以及使用XStream进行javaBean与xml、json之间的转换
博客连接 http://blog.csdn.net/zgf1991/article/details/7894427 使用XStream, java Object 与xml之间的转换,以及写入SD卡
Xstream_java对象和xml的互相转换
java中对象与xml转换,实例带完整源码
XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。 在缺省情况下,XStream不...