2012-04-26 39 views
0

我有一個叫Lookup類具有兩個屬性:序列化到XML使用XStream的,但沒有得到所有領域

public class Lookup { 

    private String surveyName; 
    private String GUID;  

    public Lookup(String name, String guid){ 
     this.surveyName = name; 
     this.GUID = guid; 
    } 

} 

在另一類,我有我試圖序列,並保存到Lookup列表文件。這是我如何做它:

List<Lookup> lookup = new ArrayList<Lookup>(); 
lookup.add(new Lookup("foo","bar")); 
XStream serializer = new XStream(); 
serializer.alias("Lookups",List.class); 
String xml = serializer.toXML(lookup); 

我最終的XML是:

<Lookups> 
    <Lookup> 
    <GUID>bar</GUID> 
    </Lookup> 
</Lookups> 

正如你所看到的,它只是序列化領域GUID但不是場surveyName。爲什麼它忽略了這個領域?

回答

0

傻了,我的錯誤完全在我身上。字段name正在接收一個空字符串,因此XStream必須忽略它。

1

是否確定不要在其他位置修改Lookup變量。此代碼運行正常

public class Test { 
    public static void main(String[] args) { 
     List<Lookup> lookup = new ArrayList<Lookup>(); 
     lookup.add(new Lookup("foo","bar")); 
     XStream serializer = new XStream(); 
     serializer.alias("Lookups",List.class); 
     String xml = serializer.toXML(lookup); 
     System.out.println(xml); 
    } 
} 
class Lookup { 
    private String surveyName; 
    private String GUID;  

    public Lookup(String name, String guid){ 
     this.surveyName = name; 
     this.GUID = guid; 
    } 
} 

輸出:

<Lookups> 
    <Lookup> 
    <surveyName>foo</surveyName> 
    <GUID>bar</GUID> 
    </Lookup> 
</Lookups> 
+0

啊,這是我的壞。我上面發佈的代碼並不完全是我運行的代碼。我通過另一個變量將'name'傳遞給了構造函數,這個變量恰好是一個空字符串。修復了固定的xml輸出。 – xbonez 2012-04-26 21:24:05