使用XStream对Set的内容进行别名化

时间:2011-11-09 15:03:49

标签: java collections xstream

我在XStream中遇到别名问题。

我有一组String项目,我想像这样序列化为XML:

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

然而,我似乎找不到解决这个问题的好方法。我已经尝试了一个字符串列表,但后来我最终得到了

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

我也尝试将String放在一个简单的类中,但后来我得到了

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

其中<type>是自定义类的别名,而aType是类中的属性,即使用此方法我得到一个级别太多。我如何去除额外级别或简单地用<string>替换自定义标记名称?

1 个答案:

答案 0 :(得分:3)

您需要为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>