我的XML:
<autocomplete>
<url_template>http://api-public.netflix.com/catalog/titles/autocomplete?{-join|&|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 :(得分: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
。