2012-10-13 10 views
0

我的XML:需要適當的對象聲明爲我的XStream反序列化

<autocomplete> 
    <url_template>http://api-public.netflix.com/catalog/titles/autocomplete?{-join|&amp;|term}</url_template> 
    <autocomplete_item> 
    <title short="Star Wars: Episode V: The Empire Strikes Back: Original Theatrical Version"></title> 
    </autocomplete_item> 
</autocomplete> 

我的對象:

public class AutoCompleteList 
{ 
public String url_template; 
public List<AutocompleteItem> autocomplete_item; 
} 

public class AutocompleteItem 
{ 
public Title title; 
} 

public class Title 
{ 
@XStreamAlias("short") 
public String Short; 
} 

我的代碼:

XStream xstream = new XStream(); 
xstream.alias("autocomplete", AutoCompleteList.class); 
xstream.alias("title", Title.class); 
AutoCompleteList myObj = (AutoCompleteList)xstream.fromXML(stringFromStream); 

我無法檢索「稱號簡短「的價值來自XML。另外,如果我的XML有多個autocomplete_item標記集,xstream錯誤就會抱怨存在autocomplete_item的重複實例。

有什麼建議嗎?

我在這裏搜索了很多問題,但沒有任何東西似乎適用於我。

回答

0

對於short屬性,嘗試添加@XStreamAsAttribute註釋:

public class Title 
{ 
    @XStreamAlias("short") 
    @XStreamAsAttribute 
    public String Short; 
} 

,並呼籲xstream.processAnnotations(Title.class)你叫fromXML之前。

對於多autocomplete_item問題,您應該使用@XStreamImplicit

public class AutoCompleteList 
{ 
    public String url_template; 

    @XStreamImplicit(itemFieldName="autocomplete_item") 
    public List<AutocompleteItem> autocomplete_item; 
} 

同樣,你將需要調用xstream.processAnnotations(AutoCompleteList.class)告訴XStream把閱讀註解,你可以調用fromXML之前。

+0

這正是我所需要的。謝謝。這讓我瘋狂。 – Jason

相關問題