XStream避免收集xml元素

时间:2009-11-13 22:38:11

标签: java collections xstream

给定List个POJO,如果我用XStream序列化它们,我得到:

<list>
  <pojo>
     <a>a</a>
     <b>b</b>
  </pojo>
  <pojo>
     <a>a</a>
     <b>b</b>
  </pojo>
</list>

如何进行序列化并省略<list> </list>条目?我已经将addImplicitCollection用于类似的目的,但是当集合是被序列化的类的成员时,这是为了省略集合实例变量 name

注意:This问题似乎相似但不完全相关(我认为)。

3 个答案:

答案 0 :(得分:4)

这些天(使用XStream 1.4.1)可以使用“implicit collections”从输出中省略容器元素

答案 1 :(得分:2)

你做不到。想象一下<list>节点已经消失了--XStream如何知道如何反序列化这个XML?它可以是list / set / array /完全不同的东西。此外,假设您有一个对象,其中包含您的pojo后跟单个pojo字段的列表 - 它们会混杂在一起。

也就是说,如果你无意反序化这个,你可以实现自己的流驱动程序和编写器,类似于JSON writer,它会为你删除<list>

答案 2 :(得分:1)

XML必须有一个根元素,所以ChssPly76是正确的,但当然如果你是流式传输XML,那么你可以一个接一个地编写每个pojo(从内存角度来看也是如此)。

有关详细信息,请参阅http://x-stream.github.io/objectstream.html