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

使用 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包

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值