计算机科学

首页 > 计算机科学

XStream

2018-08-31 10:12:04     所属分类:计算机程序库
XStream Library
开发者 Codehaus
初始版本 2004年1月1日 (2004-01-01)
稳定版本
稳定版本
1.4.2
(2011年11月3日 (2011-11-03)
编程语言 Java
操作系统 跨平台
许可协议 BSD风格的许可
网站 https://web.archive.org/web/20120711075012/http://xstream.codehaus.org/

XStream是Java类库,用来将对象序列化成XML (JSON)或反序列化为对象。[1]

XStream是自由软件,可以在BSD许可证的许可下分发。

目录

  • 1 XStream库
    • 1.1 对象图的序列化
  • 2 使用
  • 3 参考文献
  • 4 外部链接

XStream库

XStream在运行时使用Java反射机制对要进行序列化的对象树的结构进行探索,并不需要对对象作出修改。XStream可以序列化内部字段,包括私private和final字段,并且支持非公开类以及内部类。[2]

在缺省情况下,XStream不需要配置映射关系,对象和字段将映射为同名XML元素。但是当对象和字段名与XML中的元素名不同时,XStream支持指定别名。XStream支持以方法调用的方式,或是Java 标注的方式指定别名。

XStream在进行数据类型转换时,使用系统缺省的类型转换器。同时,也支持用户自定义的类型转换器。

对象图的序列化

当序列化一个对象时,XStream将序列化整个对象图。如果在对象图中遇到重复引用,在生成的XML中奖保留这些引用。以下面的CD类为例:

package com.thoughtworks.xstream;
public class Cd {
	private String id;

	private Cd bonusCd;

	Cd(String id, Cd bonusCd) {
		this.id = id;
		this.bonusCd = bonusCd;
	}

	Cd(String id) {
		this.id = id;
	}

	public String getId() {
		return id;
	}

	public Cd getBonusCd() {
		return bonusCd;
	}
}

并且向列表添加一些Cd对象

Cd bj = new Cd("basement_jaxx_singles");
Cd mr = new Cd("maria rita");
		
List order = new ArrayList();
order.add(mr);
// 两次添加同一个CD(两个引用指向同一个对象)
order.add(bj);
order.add(bj);

// 添加自己 (循环)
order.add(order);

XStream xstream = new XStream();
xstream.alias("cd", Cd.class);
System.out.println(xstream.toXML(order));

如果在XStream的缺省的相对引用模式下执行以上程序,程序将生成下面的XML:

<list>
  <cd>
    <id>maria rita</id>
  </cd>
  <cd>
    <id>basement_jaxx_singles</id>
  </cd>
  <cd reference="../cd2"/>
  <list reference=".."/>
</list>

使用

  • Confluence[3]
  • Apache Muse[3]

参考文献

  1. ^ Serializing Java Objects with XStream. XML.com, O'Reilly Media, Inc. 2004-08-18 [2009-12-14]. (原始内容存档于2009-04-11). 
  2. ^ Use XStream to serialize Java objects into XML. Ibm.com. [2009-12-14]. (原始内容存档于2009-02-19). 
  3. ^ 3.0 3.1 XStream - References. Xstream.codehaus.org. [2009-12-14]. (原始内容存档于2009-12-28). 

外部链接

  • XStream类库主页

上一篇:SLATEC
下一篇:包装库
相关推荐