使用 XStream 把 Java 对象序列化为 XML
来源:互联网 发布:如何查看数据库主键 编辑:程序博客网 时间:2024/06/06 22:45
转载原文地址:http://www.ibm.com/developerworks/cn/xml/x-xstream/index.html
序列化对象
这个简单的例子示范了如何使用 XStream 序列化/逆序列化对象,包括两个类:Writer
和 Reader
。Writer
类使用 XStream API 把Employee
类型的对象序列化为 XML 并存储到文件中(如 清单 1 所示)。
清单 1. Writer.java
package com.samples;import java.io.FileNotFoundException;import java.io.FileOutputStream;import com.thoughtworks.xstream.*;public class Writer { public static void main(String[] args) { Employee e = new Employee(); //Set the properties using the setter methods //Note: This can also be done with a constructor. //Since we want to show that XStream can serialize //even without a constructor, this approach is used. e.setName("Jack"); e.setDesignation("Manager"); e.setDepartment("Finance"); //Serialize the object XStream xs = new XStream(); //Write to a file in the file system try { FileOutputStream fs = new FileOutputStream("c:/temp/employeedata.txt"); xs.toXML(e, fs); } catch (FileNotFoundException e1) { e1.printStackTrace(); } }}
Reader
类读取该文件,逆序列化 XML 并把数据装入 Java 对象(如 清单 2 所示)。
清单 2. Reader.java
package com.samples;import java.io.FileInputStream;import java.io.FileNotFoundException;import com.thoughtworks.xstream.*;import com.thoughtworks.xstream.io.xml.DomDriver;public class Reader { public static void main(String[] args) { XStream xs = new XStream(new DomDriver()); Employee e = new Employee(); try { FileInputStream fis = new FileInputStream("c:/temp/employeedata.txt"); xs.fromXML(fis, e); //print the data from the object that has been read System.out.println(e.toString()); } catch (FileNotFoundException ex) { ex.printStackTrace(); } }}
清单 3 显示了 Employee
对象的结构。
清单 3. Employee.java
package com.samples;public class Employee { private String name; private String designation; private String department; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDesignation() { return designation; } public void setDesignation(String designation) { this.designation = designation; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } @Override public String toString() { return "Name : "+this.name+ "\nDesignation : "+this.designation+ "\nDepartment : "+this.department; }}
回页首
读取配置文件
多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 XStream 从 XML 配置文件中读取配置属性。
XML 数据绑定通常需要从 XML 文件生成 Java 对象。使用 XStream 省略了生成对象这个步骤。只需要编写一个 Java 类将类的字段映射到希望读取的 XML 的元素。这个例子使用的配置文件如 清单 4 所示。
清单 4. Config.xml
<?xml version="1.0" encoding="UTF-8"?><config> <datasource-name>IRIS</datasource-name> <ipaddress>9.124.74.85</ipaddress> <logfilename>DailyLogApplication.log</logfilename> <appender>console</appender></config>
清单 5 显示的 ConfigReader
类读取该配置文件并将属性加载到 Java 对象中。
清单 5. ConfigReader.java
package com.samples;import java.io.FileInputStream;import java.io.FileNotFoundException;import com.thoughtworks.xstream.*;import com.thoughtworks.xstream.io.xml.DomDriver;public class ConfigReader { String datasourcename = null; String ipaddress = null; String logfilename = null; String appender = null; @Override public String toString() { // This method prints out the values stored in the member variables return "Datasource Name : "+datasourcename+ " \nIP Address : "+ipaddress+ " \nLogfilename : "+logfilename+ " \nAppender : "+appender; } /** * @param args * @throws FileNotFoundException */ public static void main(String[] args) throws FileNotFoundException { XStream xs = new XStream(new DomDriver()); FileInputStream fis = new FileInputStream("c:/temp/Config.xml"); xs.aliasField("datasource-name", ConfigReader.class, "datasourcename"); xs.alias("config", ConfigReader.class); ConfigReader r = (ConfigReader)xs.fromXML(fis); System.out.println(r.toString()); }}
回页首
结束语
创建和开发使用 XStream 的应用程序只需要简单的几个步骤。本文介绍如何使用 XStream 序列化/逆序列化 Java 对象和读取配置文件,通过 XStream 网站(教程链接参见 参考资料)可以进一步了解别名、注解和转换程序。别名和转换程序可以让您完全控制生成的 XML。
补充:
//包重命名 xstream.aliasPackage("com", "com.ljq.test"); //包名com.ljq.test记得写正确
//类重命名xstream.alias("Student", Student.class);
//属性重命名xstream.aliasField("birth", Student.class, "birthday");
0 0
- 使用 XStream 把 Java 对象序列化为 XML
- 使用XStream把Java对象序列化为XML
- 使用 XStream 把 Java 对象序列化为 XML
- 使用XStream把Java 对象序列化为XML!!!
- 使用 XStream 把 Java 对象序列化为 XML
- 使用 XStream 把 Java 对象序列化为 XML
- 使用 XStream 把 Java 对象序列化为 XML
- 使用 XStream 把 Java 对象序列化为 XML
- 使用 XStream 把 Java 对象序列化为 XML(本文转载自http://www.ibm.com/developerworks/cn/xml/x-xstream/)
- Java使用XStream将集合类内容序列化为XML
- 使用 XStream 把 Java 对象序列化为 XML(本文转载自http://www.blogjava.net/zlkn2005/archive/2005/12/16/24240.html)
- Java 对象序列化为Json 或XML
- java对象序列化为xml格式
- 把对象序列化为xml格式和反序列化
- c# 对象序列化为XML
- 将对象序列化为XML
- java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例
- Java XStream把Java对象转换为xml
- 服务器session持久化 SESSION.ser文件
- db2事务日志满,或者日志磁盘空间已满解决办法
- LeetCode: Kth Largest Element in an Array
- 类初始化场景 JDK1.7
- hihoCoder#1082 : 然而沼跃鱼早就看穿了一切(做题总结)
- 使用 XStream 把 Java 对象序列化为 XML
- Windows和Kali:重装Windows的MBR恢复问题
- 15级南阳理工软件学院卓越班笔试面试总结
- HDU1869-六度分离
- 使用RecyclerView加载网络图片时出现no adapter attached skipping layout
- Oracle ROWID理解
- JAVA基础6.57——final关键字
- 008-汇编指令MOVSX与MOVZX
- CSS之脱离文档流