XStream 读取文件内容转换成JAVA对象

[b]简介[/b]:
XStream 是一个轻量级的、简单易用的开放源代码 Java™ 库,用于将 Java 对象序列化为 XML /JSON 或者再转换回来。使用它序列化和逆序列化对象以及从 XML 配置文件读取配置属性。

[b]特点[/b]:
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。
和其他序列化工具相比,XStream 有三个突出的特点:
1)、XStream 不关心序列化/逆序列化的类的字段的可见性。
2)、序列化/逆序列化类的字段不需要 getter 和 setter 方法。
3)、序列化/逆序列化的类不需要有默认构造函数。
不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类。

闲话小说,直入正题:
[b]一、序列化对象[/b]

这个简单的例子示范了如何使用 XStream 序列化/逆序列化对象,包括两个类:Writer 和 Reader。Writer 类使用 XStream API 把 Employee 类型的对象序列化为 XML 并存储到文件中,代码如下。


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 对象,代码如下。


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

}
}


Employee 实体对象结构如下。


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;
}
}


[b]二、读取配置文件[/b]

取完整的 XML 文件下面的例子说明了如何读取一个简单的 XML 文件。要读取完整的 XML 文件可能需要编写自定义的转换程序。XStream “Converter Tutorial” 网站(参见 参考资料)提供了编写转化程序的教程。 .多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 XStream 从 XML 配置文件中读取配置属性。

XML 数据绑定通常需要从 XML 文件生成 Java 对象。使用 XStream 省略了生成对象这个步骤。只需要编写一个 Java 类将类的字段映射到希望读取的 XML 的元素。这个例子使用的配置文件如下:

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>


ConfigReader 类读取该配置文件并将属性加载到 Java 对象中,代码如下:

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 读取文件生成JavaBean对象,JavaBean与XML/JSON之间转换,请看下文。

原文地址:[url]http://www.ibm.com/developerworks/cn/xml/x-xstream/[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值