2009-11-13 53 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