关于实体类对象与XML的转换

来源:互联网 发布:ios模拟gps定位软件 编辑:程序博客网 时间:2024/05/03 09:26

使用 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();    }}


原创粉丝点击