3

単純なAPIを使用して、オブジェクトへのxml応答を逆シリアル化する必要があります。オブジェクトを逆シリアル化すると正常に機能しますが、インラインリストを逆シリアル化しようとすると、例外が発生します。org.simpleframework.xml.core.ElementException:要素'Person'は、行のクラスMyPersonsに一致しません。 3.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

お返事をお待ちしておりますことをお詫び申し上げます。あなたが今までに問題を理解していない場合のために、私はあなたの例で少し遊んで、解決策を見つけることができました。それは実際にはかなり簡単です、そしてあなたはそれを自分で動かすことに本当に近かったです。以前のコメントは無視してください。問題の解決に近づくことはできません。

それを機能させるために変更する必要がある2つのことがあります:

まず、entry="Person"の要素リストに追加してMyPersons、結果が次のようになるようにします。

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

次に、提供されているxmlの例でテストすることを計画している場合は、名前エントリの一部を修正して、正しい終了タグを付けます。例:<Name>bar</Category>、これは明らかにxml構造の有効性を損ないます。これは単なるタイプミスであり、同じエラーがライブデータに存在しないことは確かです。

于 2012-07-21T02:52:56.100 に答える