XStream

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
XStream
Тип Библиотека
Разработчик Codehaus
Написана на Java
Операционная система Кроссплатформенное программное обеспечение
Аппаратная платформа Java Virtual Machine
Последняя версия 1.4.20 (24 декабря, 2022 г.)
Лицензия BSD
Сайт x-stream.github.io

XStream — Java библиотека классов для сериализации объектов в XML (или JSON) формат.

Особенности[править | править код]

XStream использует рефлексию для исследования структуры объекта в процессе выполнения программы, и не требует внесения изменений в сам объект.[1] Библиотека позволяет сериализовать приватные, а также, объявленные как final, поля. Кроме этого, поддерживаются не публичные и вложенные классы.

При сериализации объекта выполняется построение его полного графа[en]*. При этом сохраняются все кросс-ссылки объекта.

К примеру, возьмем следующий класс 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 bj = new Cd("basement_jaxx_singles");
Cd mr = new Cd("maria rita");
		
List<Cd> order = new ArrayList<Cd>();
order.add(mr);
// добавим два раза один и тот же объект (две ссылки на один и тот же объект)
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>

Лицензирование[править | править код]

XStream является свободным ПО, распространяемым с использованием лицензии BSD типа.

Использование[править | править код]

Примечания[править | править код]

  1. Бангалор Р. Применение XStream для сериализации Java-объектов в XML. developerWorks Россия (5 октября 2009). Дата обращения: 17 сентября 2013. Архивировано 9 ноября 2012 года.
  2. 1 2 Xstream references Архивировано 28 декабря 2009 года.

Ссылки[править | править код]