Псевдоним содержимого набора с использованием XStream - PullRequest
1 голос
/ 09 ноября 2011

У меня проблема с алиасами в XStream.

У меня есть набор строковых элементов, которые я хотел бы сериализовать в XML, например:

<types>
  <type>abc</type>
  <type>def</type>
</types>

Однако я не могу найти хороший способ решить эту проблему. Я пробовал список строк, но потом получаю

<types>
  <string>abc</string>
  <string>def</string>
</types>

Я также пытался поместить строку в простой класс, но потом я получаю

<types>
  <type>
    <aType>abc</aType>
  </type>
</types>

, где <type> - это псевдоним пользовательского класса, а aType - это атрибут в классе, т. Е. Я получаю слишком много на один уровень, используя этот подход. Как бы я избавился от лишнего уровня или просто заменил <string> собственным именем тега?

1 Ответ

3 голосов
/ 11 ноября 2011

Вам понадобится создать псевдоним как List, так и элементы в списке.

List<String> types = new ArrayList<String>();
types.add("abc");
types.add("def");

XStream xstream = new XStream();
xstream.alias("types", List.class);
xstream.alias("type", String.class);
System.out.println(xstream.toXML(types));

приведет к

<types>
  <type>abc</type>
  <type>def</type>
</types>
...