1

给定一个ListPOJO,如果我用 XStream 序列化它们,我会得到:

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

如何进行序列化并省略<list> </list>条目?我已经用于addImplicitCollection类似的目的,但是当集合是正在序列化的类的成员时 ,它会省略集合实例变量名称。

注意:这个问题看起来很相似,但并不完全相关(我认为)。

4

3 回答 3

4

现在(使用 XStream 1.4.1)可以使用“隐式集合”从输出中省略容器元素

于 2011-09-14T09:39:40.073 回答
2

你不能。想象一下那个<list>节点已经消失了——XStream 怎么知道如何反序列化这个 XML?它可以完全是列表/设置/数组/其他东西。此外,假设您有一个对象,其中包含一个列表,pojo后面跟着一个pojo字段——它们会混杂在一起。

也就是说,如果您不打算反序列化它,您可以实现自己的流驱动程序和编写器,类似于JSON 编写器,它们会<list>为您删除。

于 2009-11-13T22:58:43.710 回答
1

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

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

于 2010-02-23T23:43:21.610 回答