我需要使用简单的api反序列化对象的xml响应。 当我反序列化一个对象时,它工作正常,但是当我尝试反序列化内联列表时,我得到一个异常: org.simpleframework.xml.core.ElementException:元素' Person'在第3行的MyPersons课程中没有匹配。
会理解我做错了什么的线索,或者反复使用复杂对象反序列化内联列表的工作示例。
感谢。
附件是我的对象的简化示例:
我的xml:
<Persons>
<Person>
<Info>
<ID>1</ID>
<Name>A</Name>
</Info>
<Address>aaa</Address>
<Products>
<Product>
<Name>foo</Name>
<Product>foofoo</Product>
</Product>
<Product>
<Name>bar</Category>
<Product>barbar</Product>
</Product>
</Products>
</Person>
<Person>
<Info>
<ID>2</ID>
<Name>B</Name>
</Info>
<Address>bbb</Address>
<Products>
<Product>
<Name>foo2</Name>
<Product>foofoo2</Product>
</Product>
<Product>
<Name>bar2</Category>
<Product>barbar2</Product>
</Product>
</Products>
</Person>
</Persons>
我的对象:
@Root(name="Persons")
public class MyPersons {
@ElementList(inline=true)
private List<Person> persons;
}
@Root
public class Person {
@Element
private Info Info;
@Element(required=false)
private String Address;
@ElementList
private List<Product> Products;
public Person(@Element(name="Info") Info Info){
this.Info = Info;
//doing some logic
}
}
public class Product {
@Element
private String Name;
@Element
private String Product;
}
@Root
public class Info {
@Element(required=false)
private String ID;
@Element
private String Name;
}
答案 0 :(得分:5)
我很抱歉花了这么长时间才回到你身边。如果您现在还没有弄清楚问题,我会对您的示例进行一些调整,并设法找到解决方案。它实际上非常简单,你真的很接近自己的工作。请忽略我之前的评论,因为这不会让你更接近解决问题。
要使其发挥作用,您需要更改两件事:
首先,将entry="Person"
添加到MyPersons
中的元素列表中,这样结果将如下所示:
@ElementList(entry="Person", inline=true)
private List<Person> persons;
其次,如果您计划在提供的xml示例上对其进行测试,请修复一些名称条目以获得正确的结束标记。例如:<Name>bar</Category>
,这显然会破坏xml结构的有效性。我很确定这只是一个错字,并且您的实时数据中不存在相同的错误。