Мне очень нравится XStream
библиотека. Это действительно хорошая работа по выводу довольно простого XML
в результате предоставленного объекта Java. Это прекрасно работает для воспроизведения
объект обратно из XML, а также. И одна из наших сторонних библиотек
все равно уже зависело от этого.
Мы решили использовать его, потому что хотели
наш XML, чтобы быть читаемым человеком. С помощью
функция псевдонима делает это много
лучше.
Вы можете расширить библиотеку, если вы
хочу некоторую часть объекта
десериализовать в лучшую сторону. Мы
сделал это в одном случае, чтобы файл
будет иметь набор степеней,
минуты и секунды для широты
и долгота вместо двух
двойники.
Двухминутный учебник подводит итог основного использования, но в
Заинтересованность хранить информацию в одном месте, я постараюсь подвести ее
здесь чуть короче.
// define your classes
public class Person {
private String firstname;
private PhoneNumber phone;
// ... constructors and methods
}
public class PhoneNumber {
private int code;
private String number;
// ... constructors and methods
}
Затем используйте библиотеку для записи XML.
// initial the libray
XStream xstream = new XStream();
xstream.alias("person", Person.class); // elementName, Class
xstream.alias("phone", PhoneNumber.class);
// make your objects
Person joe = new Person("Joe");
joe.setPhone(new PhoneNumber(123, "1234-456"));
// convert xml
String xml = xstream.toXML(joe);
Ваш вывод будет выглядеть так:
<code><person>
<firstname>Joe</firstname>
<phone>
<code>123</code>
<number>1234-456</number>
</phone>
</person>
Чтобы вернуться:
<code>Person newJoe = (Person)xstream.fromXML(xml);
XMLEncoder предназначен для сериализации Java-бина. В прошлый раз, когда я использовал это,
файл выглядел довольно неприятно. Если на самом деле все равно, как выглядит файл, он может
работать на вас, и вы можете избежать сторонней зависимости, что тоже хорошо. Я ожидаю, что возможность сделать сериализацию красивее будет более сложной задачей и с XMLEncoder.
XStream выводит полное имя класса, если вы не указали псевдоним. Если у класса Person выше
package example;
, xml будет иметь "example.Person" вместо "person".