2009-11-13 100 views
1

鉴于POJO的的List,如果我使用XStream序列化他们,我得到:XStream的避免收集XML元素

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

我怎样才能做到系列化,省略<list> </list>条目?为了类似的目的,我使用addImplicitCollection,但是当集合是被序列化的类的成员时,它忽略了集合实例变量名称

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

回答

2

你不能。想象一下<list>节点不见了 - XStream如何知道如何反序列化这个XML?它可以是list/set/array /其他东西。此外,假设你有一个包含你的pojo的列表的对象,然后是一个pojo字段 - 它们会混杂在一起。也就是说,如果你不打算反序列化这个,你可以实现你自己的流驱动器和写作器,类似于JSON writer,它会为你删除<list>

+0

知道了,有意义省略从输出的容器元素。谢谢。 – 2009-11-14 01:28:14

+0

这不再是真的,请参阅下面的答案。 – 2011-09-14 09:39:59

1

XML必须有一个根元素,所以ChssPly76是正确的,但是当然如果你在流XML,那么你可以逐个写一个pojo(从内存的角度来看也是有意义的)。

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