- 浏览: 230607 次
- 性别:
- 来自: beijing
文章分类
XML 序列化用处很多,包括对象持久化和数据传输。但是一些 XML 序列化技术实现起来可能很复杂。XStream 是一个轻量级的、简单易用的开放源代码 Java™ 库,用于将 Java 对象序列化为 XML 或者再转换回来。了解如何设置 XStream,如何使用它序列化和逆序列化对象以及从 XML 配置文件读取配置属性。<!--START RESERVED FOR FUTURE USE INCLUDE FILES--><!-- include java script once we verify teams wants to use this and it will work on dbcs and cyrillic characters --><!--END RESERVED FOR FUTURE USE INCLUDE FILES-->
使用 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 项目,需要选择 File > New > Project,然后按下列步骤操作:
- 选择 Java > Java Project > Next(如 图 1 所示)。
图 1. 新建 Java 项目
- 填写项目名称并单击 Next(如 图 2 所示)。
图 2. 填写项目名称
- 单击 Finish 完成该任务(如 图 3 所示)。
图 3. 完成设置
图 4 显示了新建的 Java 项目。
按照下列步骤向新建的项目添加 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 支持后的项目。
|
|
这个简单的例子示范了如何使用 XStream 序列化/逆序列化对象,包括两个类:Writer
和 Reader
。Writer
类使用 XStream API 把 Employee
类型的对象序列化为 XML 并存储到文件中(如 清单 1 所示)。
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 所示)。
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
对象的结构。
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; } } |
|
|
|
多数应用程序都要用到一些属性。这些属性可能是要连接的数据源的名称或者日志文件的位置。配置文件最适合存储这类数据,从而在修改这些属性的时候不需要重新编译应用程序,应用程序维护起来也更容易。下面的例子说明如何在应用程序中使用 XStream 从 XML 配置文件中读取配置属性。
XML 数据绑定通常需要从 XML 文件生成 Java 对象。使用 XStream 省略了生成对象这个步骤。只需要编写一个 Java 类将类的字段映射到希望读取的 XML 的元素。这个例子使用的配置文件如 清单 4 所示。
<?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 对象中。
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 序列化/逆序列化 Java 对象和读取配置文件,通过 XStream 网站(教程链接参见 参考资料)可以进一步了解别名、注解和转换程序。别名和转换程序可以让您完全控制生成的 XML。
发表评论
-
二进制 授权管理 java
2013-09-09 12:52 913package org.qincy.binary; ... -
com.richfit.bi.quartz 定时执行示例
2013-04-12 15:39 01 内含jetty 配置,下载jetty 依赖包,算了,还是提 ... -
利用工具将shp文件导入到oracle spatial中
2012-05-21 14:20 43931 下载shp2sdo 工具,将工具放在 oracle按照目录 ... -
Arcgis object for java 访问栅格数据,使用GP工具,进行栅格矢量化---栅格矢量化面。
2012-06-20 09:17 4158直接贴代码了,不多解释了。 1、栅格数据的 ... -
svn 删除注册表
2012-02-11 12:02 1570svn 删除注册表 -
arcgis server 服务
2012-01-06 17:58 1186package com.hdmap.fymas; imp ... -
Flex BlazeDS java 项目
2011-12-12 17:21 1102根据网上的例子 ,写的 flex BlazeDS 框架与 ... -
工具类
2011-02-18 14:05 980英文数字转换为 中文数字 public class Mon ... -
junit 4 spring 自动化测试
2010-12-13 16:08 16421 添加jar ,依赖jar 包围 spring-test, ... -
在tomcat 发布,去掉项目名称
2010-11-17 09:53 19701 找到 server.xml 配置= ... -
掉字段内容包含的空格
2010-09-27 10:17 982使用replace函数去掉字段内容包含的空格,例子如下: up ... -
无聊的jsti 的fn 函数(资料备份)
2010-09-25 17:16 985无聊的jsti 的fn 函数(资料备份) ... -
无聊写Code
2010-09-25 09:38 1010package edu.qdkj.main; impor ... -
Spring Quartz 学习
2010-09-20 09:27 1175Quartz 是一个 定时执行的框架,可以设定规定时执行,或者 ... -
kaptcha 例子
2010-09-13 15:09 3027kaptcha 简单例子 与 产生中文字符 kaptch ... -
myEclipse 下的项目不能编译
2010-09-09 14:21 952查看 是否有的错误的jar 1.项目----prope ... -
关于VLSM 例子
2010-08-31 16:57 1501未经测试,不知道理解是否正确。 VLSM(可变长子网掩码) ... -
jwebmail的配置
2010-08-16 16:59 2499jwebmail的配置说明 ... -
Solaris10下Nagios安装
2010-08-16 08:48 974发 -
java JDK 下载页面
2010-08-13 16:32 1022全部JDK 下载,从 1.1 到 jdk 6 下载 http ...
相关推荐
Java中的XStream库是一个强大的工具,它用于将Java对象序列化为XML,同时也能将XML数据反序列化回相应的Java对象。XStream以其简洁的API和直观的使用方式,在处理XML数据时受到开发者们的欢迎。在"java XStream xml...
XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 XStream的工作原理是基于反射和类型转换,它可以自动地映射Java类的字段到XML元素,反之亦然。这...
在Java开发中,处理XML数据是一项常见的任务,XStream库提供了一个简单而强大的方式来将Java对象序列化为XML,以及从XML反序列化回Java对象。这个实例将深入探讨如何使用XStream进行XML操作。 **1. XStream简介** ...
XStream是一个强大的库,它提供了将Java对象转换为XML,以及将XML转换回等效Java对象的功能。在这个场景中,"使用XStream多集合生成xml"是一个关键的技术点,它涉及到如何将多个集合类的对象转换成XML文档。以下是对...
Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...
最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar 最齐全的xstream1.4.8.jar ...
**XStream Java下的使用** XStream 是一个Java库,它能够将Java对象转换为XML,同时也能将XML数据转换回相应的Java对象。这个强大的库在处理XML序列化和反序列化时提供了简单而直观的API,尤其适用于Android开发中...
XStream 是一个强大的 Java 库,它允许程序员轻松地将 Java 对象序列化为 XML,同时也能从 XML 数据中反序列化回原来的 Java 对象。这个功能在数据持久化、网络传输或者配置文件存储等方面非常有用。XStream 的设计...
XStream是一个强大的库,专门用于XML与Java对象之间的互相转换。这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而...
《XStream4JavaDemo演示源码解析》 XStream是一个用Java编写的开源库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象的能力。这个库以其简单易用和强大的功能在Java社区中广受欢迎。本文将通过分析...
【标题】:“xStream 实现xml与 java对象的转换” 在Java开发中,XML作为一种常见的数据交换格式,常用于存储和传输数据。然而,XML与Java对象之间的转换并不总是直观和简便的。这时,xStream库应运而生,它提供了...
XStream是一款强大的库,它使得Java对象能够轻松地转换为XML格式,反之亦然。本教程将深入探讨如何使用XStream进行Java类与XML文件之间的互转解析。 首先,我们需要引入XStream库。在Maven项目中,可以在pom.xml...
在Java开发中,数据序列化和反序列化是常见的需求,XStream库提供了一个方便的解决方案。XStream是一个用于XML、JSON和HTML的Java库,它能够将Java对象转化为XML,反之也能将XML数据还原为Java对象。在这个场景中,...
com.thoughtworks.xstream.converters.ConversionException: No field 'null' found in class '.....(注解的类路径)' ---- Debugging information ---- message : No field 'null' found in class '.....' cause...
XStream 是一个强大的 Java 库,它的主要功能是将 Java 对象序列化为 XML,并能够从 XML 数据中反序列化回原来的对象。这个库的设计目标是提供简单易用的 API,同时保持高性能和安全性。在 XStream 1.4 版本中,它...
XStream是一款强大的Java库,它允许开发者方便地将XML数据序列化为Java对象,以及将Java对象反序列化为XML。这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在...
XStream 是一个强大的 Java 库,它允许程序员方便地将 Java 对象序列化为 XML,以及将 XML 反序列化回 Java 对象。这个组件在处理数据交换、持久化或跨进程通信时非常有用。在Java开发中,XStream 提供了一种简洁的...
在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...
XStream是一个强大的库,它使得Java对象能够轻松地转换为XML,反之亦然。这个"XStream简单应用实例(xml)"的主题将向我们展示如何利用XStream库进行对象到XML的序列化和反序列化操作。 首先,XStream的核心功能是...