使用 XStream不用任何映射就能实现多数 Java 对象的序列化,却不关心序列化/逆序列化的类的字段的可见性,序列化/逆序列化类的字段也不需要 getter 和 setter 方法,序列化/逆序列化的类不需要有默认构造函数。
使用 XStream 序列化的类不需要实现 Serializable 接口。
在生成的 XML中对象名变成了元素名,类中的字符串组成了 XML中的元素内容。
XStream 是一种序列化工具而不是数据绑定工具,不能从XML 或者 XML Schema Definition (XSD) 文件生成类。
本例实现了以下4种基本功能:
1. object类型转换为xml类型,在控制台打印
2. xml类型转换为object类型,在控制台打印
3. 将object类型转换为xml类型,并写入XML文件
4. 读取XML文件,加载进相应Object类型
=================================================================================================
1。加载 XStream 需要的jar包 xstream-1.4.2.jar
xpp3_min-1.1.4c.jar
xmlpull-1.1.3.1.jar
2。创建实体类User.java
package com.entity; /** * * 实体类 * * @author 莫小哆_ly 2012-2-3 */ public class User { private String userName; private String passWord; private String registeredTime; public User() { } public User(String userName, String passWord, String registeredTime) { this.userName = userName; this.passWord = passWord; this.registeredTime = registeredTime; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassWord() { return passWord; } public void setPassWord(String passWord) { this.passWord = passWord; } public String getRegisteredTime() { return registeredTime; } public void setRegisteredTime(String registeredTime) { this.registeredTime = registeredTime; } }3。编写功能实现类
package com.switcher; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; import com.entity.User; import com.thoughtworks.xstream.XStream; /** * * 使用 XStream不用任何映射就能实现多数 Java 对象的序列化。 * * 在生成的 XML中对象名变成了元素名,类中的字符串组成了 XML中的元素内容。 * * 使用 XStream 序列化的类不需要实现 Serializable 接口。 * * XStream 是一种序列化工具而不是数据绑定工具 * * 不能从XML 或者 XML Schema Definition (XSD) 文件生成类。 * * @author 莫小哆_ly 2012-2-3 */ public class SwitchXML { /* * XStream 不关心序列化/逆序列化的类的字段的可见性。 * * 序列化/逆序列化类的字段不需要 getter 和 setter 方法。 * * 序列化/逆序列化的类不需要有默认构造函数。 */ private XStream xStream = new XStream(); private String xmlPath = "D:/userdata.xml"; // 1. obj -> xml(object类型转换为xml类型) public String printXML(User user) { System.out.println("obj -> xml"); String xml = xStream.toXML(user); System.out.println(xml); return xml; } // 2. xml->obj(xml类型转换为object类型,并打印) public void printObj(String xml) { System.out.println("xml -> obj"); User u = (User) xStream.fromXML(xml); System.out.println(u.getUserName() + " " + u.getPassWord() + " " + u.getRegisteredTime()); } // 3. 将object类型转换为xml类型,并写入XML文件(其他格式也可以,比如txt文件) public void writerXML(User user) { try { FileOutputStream fs = new FileOutputStream(xmlPath); xStream.toXML(user, fs); } catch (FileNotFoundException e) { e.printStackTrace(); } } // 4. 读取XML文件,加载进相应Object类型 public void readerXML() { User user = new User(); FileInputStream fis = null; try { fis = new FileInputStream(xmlPath); } catch (FileNotFoundException e) { e.printStackTrace(); } xStream.fromXML(fis, user); // 打印对象信息 System.out.println(user.toString()); // 打印对象的属性值 System.out.println(user.getUserName() + "-" + user.getPassWord() + "-" + user.getRegisteredTime()); } public static void main(String[] args) { // 用户名 String username = "admin"; // 密码 String password = "admin"; // 注册时间 Date now = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); String registeredtime = format.format(now); User user = new User(username, password, registeredtime); SwitchXML switchXML = new SwitchXML(); // 1. object类型转换为xml类型,在控制台打印 String xml = switchXML.printXML(user); System.out.println("---------------------"); // 2. xml类型转换为object类型,在控制台打印 switchXML.printObj(xml); System.out.println("---------------------"); // 3. 将object类型转换为xml类型,并写入XML文件 switchXML.writerXML(user); System.out.println("---------------------"); // 4. 读取XML文件,加载进相应Object类型 switchXML.readerXML(); } }
运行即可
====================================================================
完整源码 http://download.csdn.net/detail/sdsky1987/4042378
附带jar包