3

我需要使用简单的 api 反序列化对对象的 xml 响应。当我反序列化一个对象时,它工作得很好,但是当我尝试反序列化一个内联列表时,我得到一个异常:org.simpleframework.xml.core.ElementException: Element 'Person' does not have a match in class MyPersons at line 3.

将不胜感激我做错了什么的线索或反序列化具有复杂对象的内联列表的工作示例。

谢谢。

附件是我的对象的简化示例:

我的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;
}
4

1 回答 1

5

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

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

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

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

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

于 2012-07-21T02:52:56.100 回答