跳至內容

英文维基 | 中文维基 | 日文维基 | 草榴社区

XStream

維基百科,自由的百科全書
XStream Library
開發者Codehaus
首次發佈2004年1月1日 (2004-01-01)
當前版本1.4.11.1(2018年10月27日 (2018-10-27)
程式語言Java
作業系統跨平台
許可協議BSD風格的許可
網站https://web.archive.org/web/20120711075012/http://xstream.codehaus.org/

XStreamJava類庫,用來將對象序列化XMLJSON)或反序列化為對象。[1]

XStream是自由軟件,可以在BSD許可證的許可下分發。

XStream庫

[編輯]

XStream在運行時使用Java反射機制對要進行序列化的對象樹的結構進行探索,並不需要對對象作出修改。XStream可以序列化內部字段,包括私private和final字段,並且支持非公開類以及內部類。[2]

在缺省情況下,XStream不需要配置映射關係,對象和字段將映射為同名XML元素。但是當對象和字段名與XML中的元素名不同時,XStream支持指定別名。XStream支持以方法調用的方式,或是Java 標註的方式指定別名。

XStream在進行數據類型轉換時,使用系統缺省的類型轉換器。同時,也支持用戶自定義的類型轉換器。

對象圖的序列化

[編輯]

當序列化一個對象時,XStream將序列化整個對象圖。如果在對象圖中遇到重複引用,在生成的XML中獎保留這些引用。以下面的CD類為例:

package com.abc.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="../cd[2]"/>
  <list reference=".."/>
</list>

使用

[編輯]

參考文獻

[編輯]
  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). 

外部連結

[編輯]