XStream

From Wikipedia, the free encyclopedia

Page Module:Infobox/styles.css has no content.

Script error: No such module "If empty".
[[Programmer|DeveloperTemplate:Pluralize from text]]Codehaus
Initial releaseJanuary 1, 2004; Script error: No such module "Time ago". (2004-01-01)Script error: No such module "Check for unknown parameters".
Template:Infobox software/simple
Written inScript error: No such module "If empty".
EnginePage Template:Plainlist/styles.css has no content.Script error: No such module "Check for unknown parameters".Template:EditAtWikidata
Operating systemScript error: No such module "If empty".
LicenseBSD-style license
Websitex-stream.github.ioScript error: No such module "Check for unknown parameters".
RepositoryPage Template:Plainlist/styles.css has no content.
Script error: No such module "Check for unknown parameters".

Script error: No such module "Check for unknown parameters".Script error: No such module "Check for conflicting parameters".

XStream is a Java library to serialize objects to XML (or JSON) and back again.

NOTE: Not to confuse with XStream stream processing platform at Meta.

XStream library

XStream uses reflection to discover the structure of the object graph to serialize at run time, and doesn't require modifications to objects. It can serialize internal fields, including private and final, and supports non-public and inner classes.[1]

Object graph serialization

When serializing an object it serializes the full object graph. Duplicate references encountered in the object-model will be maintained. For example, using the following class 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;
	}
}

and add some of these object to a list

Cd bj = new Cd("basement_jaxx_singles");
Cd mr = new Cd("maria rita");
		
List<Cd> order = new ArrayList<>();
order.add(mr);
// adds the same cd twice (two references to the same object)
order.add(bj);
order.add(bj);

// adds itself (cycle)
order.add(order);

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

If the above code is executed with XStream's default relative references mode, it will generate the following XML:

<list>
  <cd>
    <id>maria rita</id>
  </cd>
  <cd>
    <id>basement_jaxx_singles</id>
  </cd>
  <cd reference="../cd[2]"/>
  <list reference=".."/>
</list>

XStream is free software, distributed under a permissive, revised BSD-style licence.

Usage

References

Page Template:Reflist/styles.css has no content.

  1. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.
  2. ^ Lua error in package.lua at line 80: module 'Module:Citation/CS1/Utilities' not found.

Script error: No such module "Check for unknown parameters".

Lua error in package.lua at line 80: module 'Module:Arguments' not found.


Template:Asbox