`
wxw850227
  • 浏览: 70653 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用 XStream 把 Java 对象序列化为 XML

    博客分类:
  • java
阅读更多
XML 序列化用处很多,包括对象持久化和数据传输。但是一些 XML 序列化技术实现起来可能很复杂。XStream 是一个轻量级的、简单易用的开放源代码 Java™ 库,用于将 Java 对象序列化为 XML 或者再转换回来。了解如何设置 XStream,如何使用它序列化和逆序列化对象以及从 XML 配置文件读取配置属性。
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列化工具而不是数据绑定工具,就是说不能从 XML 或者 XML Schema Definition (XSD) 文件生成类。

和其他序列化工具相比,XStream 有三个突出的特点:

XStream 不关心序列化/逆序列化的类的字段的可见性。
序列化/逆序列化类的字段不需要 getter 和 setter 方法。
序列化/逆序列化的类不需要有默认构造函数。
不需要修改类,使用 XStream 就能直接序列化/逆序列化任何第三方类。

设置开发环境

按照下列步骤下载和安装 XStream(下载链接参见 参考资料):

从 Eclipse 网站下载 Eclipse。安装的时候将其解压到选定的文件夹,本文中用 eclipse_home 表示。本文假定使用 Eclipse 3.3。
从 XStream 网站下载最新的 XStream 稳定版本。安装的时候解压到选定的文件夹,本文用 xstream_home 表示。假定使用的 XStream 版本是 1.2.2。
从 Sun 网站下载 Java Platform, Standard Edition (J2SE) 软件开发工具箱(SDK)。安装到选定的文件夹,本文用 java_home 表示。假定版本为 1.5.0_05。
创建一个 Java 项目

要创建一个 Java 项目,需要选择 File > New > Project,然后按下列步骤操作:

选择 Java > Java Project > Next(如 图 1 所示)。

图 1. 新建 Java 项目



填写项目名称并单击 Next(如 图 2 所示)。

图 2. 填写项目名称



单击 Finish 完成该任务(如 图 3 所示)。

图 3. 完成设置



图 4 显示了新建的 Java 项目。


图 4. 新建的 Java 项目


添加 XStream 支持

按照下列步骤向新建的项目添加 XStream 库:

在 Eclipse 的 Project Explorer 中选择新建的项目,从 Project 菜单中选择 Properties(如 图 5 所示)。

图 5. 添加 XStream 库



单击 Add External JARs,从 xstream_home/lib 文件夹中选择 xstream-1.2.2.jar。
单击 OK 结束(如 图 6 所示)。

图 6. 完成 XStream 支持的添加



图 7 显示了添加 XStream 支持后的项目。


图 7. 添加的库






回页首




序列化对象

这个简单的例子示范了如何使用 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;
}
}







回页首




读取配置文件

读取完整的 XML 文件
下面的例子说明了如何读取一个简单的 XML 文件。要读取完整的 XML 文件可能需要编写自定义的转换程序。XStream “Converter Tutorial” 网站(参见 参考资料)提供了编写转化程序的教程。 

多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 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 <--> Java 对象序列化为 XML 互换

    使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...

    Xstream_java对象和xml的互相转换

    XStream 是一个强大的 Java 库,它允许程序员轻松地将 Java 对象序列化为 XML,同时也能从 XML 数据中反序列化回原来的 Java 对象。这个功能在数据持久化、网络传输或者配置文件存储等方面非常有用。XStream 的设计...

    XStream在Java对象和XML之间相互转换

    XStream是一款强大的Java库,主要用于将Java对象序列化为XML,并能从XML反序列化回Java对象。这个功能对于数据存储、网络传输或者XML配置文件的解析非常有用。标题和描述提到的三个JAR文件——xstream-1.3.jar、kxml...

    com.thoughtworks.xstream.XStream操作XML和java对象的一些用法

    首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java对象。它的主要优点是代码简洁,易于理解,同时也支持自定义转换规则,使得XML的结构可以更贴近业务...

    Xstream for Json 完整范例(绝对好用)

    `使用 XStream 把 Java 对象序列化为 XML.mht`文件是一个MHT(MHTML)文档,可能包含了更详细的教程或示例代码,解释了如何将Java对象转换为XML的过程,这同样适用于JSON。 总的来说,Xstream结合Jettison为Java...

    Java用xStream拼接xml

    Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...

    xstream轻松解析xml到java对象

    XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 XStream的工作原理是基于反射和类型转换,它可以自动地映射Java类的字段到XML元素,反之亦然。这...

    好用的xStream XML和JAVA对象互相转换的简单示例

    XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...

    java 利用Xstream注解生成和解析xml

    Java中的Xstream库是一个强大的工具,它允许程序员方便地将Java对象序列化为XML和从XML反序列化回Java对象。这个过程对于数据交换、持久化或者创建XML配置文件非常有用。Xstream通过使用注解提供了高度的灵活性,...

    ( XML-PPT.rar )

    "使用 XStream 把 Java 对象序列化为 XML"章节则关注于XStream库,它允许开发者将Java对象直接转换为XML格式,反之亦然。这对于数据存储、网络传输或持久化等场景非常有用。 "第6章 XSL.ppt"介绍了XSL(eXtensible ...

    xml解析及使用XStream实现javaBean与xml之间的转换

    XStream是Java中一个强大的库,用于将Java对象序列化为XML,反之亦然。它提供了简单直观的API,使得JavaBean与XML之间的转换变得非常容易。 3. **XStream的使用步骤** - 引入依赖:在项目中引入XStream的jar包或...

    XStream测试Demo-xml与java对象的相互转换

    XStream是一款强大的Java库,它允许开发者方便地将XML数据序列化为Java对象,以及将Java对象反序列化为XML。这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在...

    xstream-0.5.jar

    XStream把Java对象序列化为XML

    Java实验7 序列化.doc

    然而,Java的标准序列化机制并不支持直接将对象序列化为XML格式,而是默认生成二进制格式的数据。在实验7中,我们看到了如何使用第三方库XStream将Java对象转换为XML。 XStream是一个用于在Java对象和XML之间进行...

    XStream4JavaDemo演示源码

    XStream是一个用Java编写的开源库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象的能力。这个库以其简单易用和强大的功能在Java社区中广受欢迎。本文将通过分析"XStream4JavaDemo演示源码",深入...

    XML转换为JAVA对象的方法

    XStream是一个强大的Java库,它可以将Java对象序列化为XML,同时也能将XML反序列化为等效的Java对象。这种功能使得开发者能够在XML和Java之间无缝地进行数据转换。在IDEA(IntelliJ IDEA)这样的集成开发环境中,...

    xstream对象与xml转换

    在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...

    XStream使用文档.docx

    使用XStream可以快速将Java对象序列化为XML或者其它格式,并且可以快速将XML或者其它格式转换回Java对象。XStream的使用非常简单,且不需要配置映射,速度快、占用内存小,生成的XML文件简洁。 XStream的特点和优点...

    xstream:将Java对象序列化为XML,然后再次返回

    Java到XML序列化,然后再返回 二进制文件 所有二进制工件都捆绑在-bin归档文件中。 它包括XStream jar和在构建时使用的任何其他库,或可选的运行时额外功能。 建议使用Xpp3,因为它将大大提高XStream的性能。 文献...

Global site tag (gtag.js) - Google Analytics