1
는에 변경 내용 내용 해결역 직렬화 된 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>
문제는 때 I reach 다른 레벨로 더 깊숙이 들어가기 때문에 충돌합니다.
내 XML을 DeSerialize하는 방법입니다. 내용없이 작동합니다.
Items reader = (Items)Data.Serialization.Instance().DeSerializeFromXML(xml, Items.class, Item.class);
하고 마지막으로 내 개체 : 여기에
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.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
내용을 목록으로 변경하고 XStream 마샬을 추가하여 해결했습니다. – Deejdd
해결 된 경우 솔루션을 답변으로 게시하고 * 수락 *하십시오 (http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own- 질문 /) – ollo