gpt4 book ai didi

Android - 如何使用简单的 api 反序列化包含对象列表的 xml

转载 作者:太空宇宙 更新时间:2023-11-03 13:00:55 25 4
gpt4 key购买 nike

我需要使用简单的 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;
}

最佳答案

很抱歉花了这么长时间才回复您。如果您现在还没有弄清楚问题,我对您的示例进行了一些尝试并设法找到了解决方案。它实际上非常简单,而且您已经非常接近让它自己工作了。请无视我之前的评论,因为那不会让您离解决问题更近一步。

要使其正常工作,您需要更改两件事:

首先,添加entry="Person"MyPersons 中的元素列表,结果将如下所示:

@ElementList(entry="Person", inline=true)
private List<Person> persons;

其次,如果您计划在提供的 xml 示例中对其进行测试,请修复一些名称条目以具有正确的结束标记。例如:<Name>bar</Category> ,这显然会破坏 xml 结构的有效性。我很确定这只是一个拼写错误,并且您的实时数据中不存在相同的错误。

关于Android - 如何使用简单的 api 反序列化包含对象列表的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11567573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com