虽然可以通过dom4j定义属于自己的策略将对象序列到xml文件中,但是thoughtworks公司提供的xstream 包含的功能很强大,一般的功能都涵盖了,而且使用起来也很方便。
一.持久化对象
package com.ysen;
//这是一组简单的类。XStream能把这些类的实例转换到XML或是转换回来。
//注意到这些都是私有变量。XStream不关心变量的作用域。不需要getter或是setter方法。并且,XStream不限定需要默认的构造函数
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;
}
}
操作的对象
public class Writer {
public static void main(String[] args) {
Employee e = new Employee();
e.setName("Jack");
e.setDesignation("Manager");
e.setDepartment("Finance");
//Serialize the object
//实例化XStream
//使用XStream,简单实例化XStream类:
XStream xs = new XStream();
// xs.omitField(Employee .class, "name"); //定义某一个属性的值不进行xml序列化。
// xs.useAttributeFor(String.class); // 对所有String类型的字段定义为属性tag显示
// xs.useAttributeFor("name",String.class);// 对所有String类型的字段名成为name 定义为属性tag显示,读取的时候获取不了该值
try {
FileOutputStream fs = new FileOutputStream("d:/employeedata.xml");
xs.toXML(e, fs);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
}
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;
}
public static void main(String[] args) throws FileNotFoundException {
XStream xs = new XStream(new DomDriver());
FileInputStream fis = new FileInputStream("d:/Config.xml");
//映射将对象属性datasourcename映射到xml别名datasource-name中
xs.aliasField("datasource-name", ConfigReader.class, "datasourcename");
//这是可选的一步。没有这步XStream也可以很好的起作用,但是XML元素的名字就会包含每个类的全称(包括包名),这将会使生成XML稍大。
xs.alias("config", ConfigReader.class);
ConfigReader r = (ConfigReader)xs.fromXML(fis);
System.out.println(r.toString());
}
}
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>
二
public class Author {
private String name;
public Author(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public class Entry {
private String title, description;
public Entry(String title, String description) {
this.title = title;
this.description = description;
}
}
public class Blog {
private Author writer;
private List entries = new ArrayList();
public Blog(Author writer) {
this.writer = writer;
}
public void add(Entry entry) {
entries.add(entry);
}
public List getContent() {
return entries;
}
public static void main(String[] args) throws FileNotFoundException {
Blog teamBlog = new Blog(new Author("Guilherme Silveira"));
teamBlog.add(new Entry("first","My first blog entry."));
teamBlog.add(new Entry("tutorial","Today we have developed a nice alias tutorial. Tell your friends! NOW!"));
XStream xstream = new XStream(new DomDriver());//不需要XPP3库
//System.out.println(xstream.toXML(teamBlog));
//序列化一个对象到XML
FileOutputStream fs = new FileOutputStream("d:/Blog.xml");
xstream.toXML(teamBlog, fs);
//从XML反序列化一个对象
FileInputStream fis = new FileInputStream("d:/Blog.xml");
//从xml文件中加载对象是需要new XStream(new DomDriver());
Blog blog = (Blog)xstream.fromXML(fis);
System.out.println(blog);
}
}
分享到:
相关推荐
使用 XStream 不用任何映射就能实现多数 Java 对象的序列化。在生成的 XML 中对象名变成了元素名,类中的字符串组成了 XML 中的元素内容。使用 XStream 序列化的类不需要实现 Serializable 接口。XStream 是一种序列...
XStream 是一个强大的 Java 库,它允许程序员轻松地将 Java 对象序列化为 XML,同时也能从 XML 数据中反序列化回原来的 Java 对象。这个功能在数据持久化、网络传输或者配置文件存储等方面非常有用。XStream 的设计...
XStream是一款强大的Java库,主要用于将Java对象序列化为XML,并能从XML反序列化回Java对象。这个功能对于数据存储、网络传输或者XML配置文件的解析非常有用。标题和描述提到的三个JAR文件——xstream-1.3.jar、kxml...
首先,XStream是一个强大的库,它由Pete Gyford开发,用于将Java对象序列化为XML,同时也能将XML反序列化为Java对象。它的主要优点是代码简洁,易于理解,同时也支持自定义转换规则,使得XML的结构可以更贴近业务...
`使用 XStream 把 Java 对象序列化为 XML.mht`文件是一个MHT(MHTML)文档,可能包含了更详细的教程或示例代码,解释了如何将Java对象转换为XML的过程,这同样适用于JSON。 总的来说,Xstream结合Jettison为Java...
Java中的xStream库提供了一个简单易用的方式来将Java对象序列化为XML,反之亦然,即反序列化XML回Java对象。 **xStream简介** xStream是一个开源的Java库,由Johannes Link创建。它提供了简洁、直观的API来处理XML...
XStream是一个Java库,它能将Java对象序列化为XML,同时也能将XML反序列化为Java对象,极大地简化了XML处理过程。 XStream的工作原理是基于反射和类型转换,它可以自动地映射Java类的字段到XML元素,反之亦然。这...
XStream是一个轻量级、高性能的库,能够将Java对象序列化为XML,同时也能将XML反序列化回Java对象,实现XML和Java对象的互相转换。 首先,我们需要引入XStream库。在给定的描述中提到了两个依赖文件:xstream-1.3.1...
Java中的Xstream库是一个强大的工具,它允许程序员方便地将Java对象序列化为XML和从XML反序列化回Java对象。这个过程对于数据交换、持久化或者创建XML配置文件非常有用。Xstream通过使用注解提供了高度的灵活性,...
"使用 XStream 把 Java 对象序列化为 XML"章节则关注于XStream库,它允许开发者将Java对象直接转换为XML格式,反之亦然。这对于数据存储、网络传输或持久化等场景非常有用。 "第6章 XSL.ppt"介绍了XSL(eXtensible ...
XStream是Java中一个强大的库,用于将Java对象序列化为XML,反之亦然。它提供了简单直观的API,使得JavaBean与XML之间的转换变得非常容易。 3. **XStream的使用步骤** - 引入依赖:在项目中引入XStream的jar包或...
XStream是一款强大的Java库,它允许开发者方便地将XML数据序列化为Java对象,以及将Java对象反序列化为XML。这个"XStream测试Demo-xml与java对象的相互转换"是一个实例,展示了如何利用XStream进行这两种操作。在...
XStream把Java对象序列化为XML
然而,Java的标准序列化机制并不支持直接将对象序列化为XML格式,而是默认生成二进制格式的数据。在实验7中,我们看到了如何使用第三方库XStream将Java对象转换为XML。 XStream是一个用于在Java对象和XML之间进行...
XStream是一个用Java编写的开源库,它提供了将Java对象序列化为XML,以及从XML反序列化回Java对象的能力。这个库以其简单易用和强大的功能在Java社区中广受欢迎。本文将通过分析"XStream4JavaDemo演示源码",深入...
XStream是一个强大的Java库,它可以将Java对象序列化为XML,同时也能将XML反序列化为等效的Java对象。这种功能使得开发者能够在XML和Java之间无缝地进行数据转换。在IDEA(IntelliJ IDEA)这样的集成开发环境中,...
在Java编程语言中,XStream库提供了一个简单且强大的机制,用于将Java对象序列化为XML,反之亦然。这使得在存储数据、传输数据或持久化对象时非常方便。本教程将深入探讨XStream库及其在Java中的使用,通过实际的...
使用XStream可以快速将Java对象序列化为XML或者其它格式,并且可以快速将XML或者其它格式转换回Java对象。XStream的使用非常简单,且不需要配置映射,速度快、占用内存小,生成的XML文件简洁。 XStream的特点和优点...
Java到XML序列化,然后再返回 二进制文件 所有二进制工件都捆绑在-bin归档文件中。 它包括XStream jar和在构建时使用的任何其他库,或可选的运行时额外功能。 建议使用Xpp3,因为它将大大提高XStream的性能。 文献...