1
解决 更改的内容内容:反序列化XML
// Lists
@XStreamImplicit(itemFieldName = "Contents")
public List<Contents> Contents = new ArrayList<Contents>();
我试图反序列化下面的XML:
<?xml version="1.0" encoding="UTF-8"?>
<Items>
<Item>
<type>Test</type>
<uid>1</uid>
<depends>1</depends>
<catid>1</catid>
<label>Test</label>
<defaultVal>default</defaultVal>
<answer>Test</answer>
<Contents>
<Content>
<uid>1</uid>
<label>Test</label>
</Content>
</Contents>
</Item>
</Items>
的问题是,当我达到由于深入另一个层次而崩溃的内容。
这是我如何DeSerialize我的XML,它的工作原理没有内容。
public static Object DeSerializeFromXML(String xml, Class items, Class item)
{
XStream xstream = new XStream();
xstream.processAnnotations(new Class[] { items, item });
return xstream.fromXML(xml);
}
这是我如何调用反序列化方法:
Items reader = (Items)Data.Serialization.Instance().DeSerializeFromXML(xml, Items.class, Item.class);
而且去年我的对象:
Items.cs
@XStreamAlias("Items")
public class Items
{
public Items() { items = new ArrayList<Item>(); }
@XStreamImplicit(itemFieldName = "Item")
public List<Item> items = new ArrayList<Item>();
}
Item.cs
@XStreamAlias("Item")
public class Item
{
// Type
public String type = "";
// Ids
public int uid = 0;
public int catid = 0;
public int depends = 0;
// Values
public String label = "";
public String defaultVal = "";
public String answer = "";
// Lists
public Contents content;
public Item()
{
}
public Item(String type, int uid, int catid, int depends, String label,
String defaultval, String answer)
{
this.type = type;
this.uid = uid;
this.catid = catid;
this.depends = depends;
this.label = label;
this.defaultVal = defaultval;
this.answer = answer;
content = new Contents();
}
@XStreamAlias("Contents")
public static class Contents
{
public Contents()
{
contents = new ArrayList<Content>();
}
@XStreamImplicit(itemFieldName = "Content")
public List<Content> contents = new ArrayList<Content>();
}
个
Content.cs
@XStreamAlias("Content")
public class Content
{
public int uid = 0;
public String label = "";
public Content()
{
}
public Content(int uid, String label)
{
this.uid = uid;
this.label = label;
}
我不太清楚,如果我的下一个级别的注解是正确的。 任何帮助表示赞赏。
你应该真的发布你的崩溃日志。 – Timmetje 2013-03-07 15:15:27
通过将内容更改为列表并添加XStream编组来解决它。 – Deejdd 2013-03-07 15:44:28
如果解决了问题,请将您的解决方案作为答案并*接受*(请参阅:http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-问题/) – ollo 2013-03-07 17:09:17