0

私のレトロフィット呼び出しがエラーで失敗しました:私は推測このxmlをjavaオブジェクト(Retrofit2 + SimpleXML)に解析する方法は? (PersistenceExceptionエラー)

org.simpleframework.xml.core.PersistenceException: Element 'item' is already used with @org.simpleframework.xml.ElementList(data=false, empty=true, entry=, inline=false, name=item, required=false, type=void) on field 'medias' private java.util.ArrayList packageName.FeedTag.medias at line 58 

は間違ってPOJOクラスにXMLをマッピングすることによって引き起こされます。

だから誰でも自分のコードに何が間違っているのか教えていただけますか?私はSimpleXMLの例とチュートリアルを見てみましたが、私のようなユースケースでは情報を見つけることができません。 (これは、改修および/またはSimpleXMLはでの作業私の最初の時間です。)

これは

<xml> 
<feed> 
<item> 
    <id>0</id> 
    <title>Lorem ipsum</title> 
</item> 

<item> 
    <id>1</id> 
    <title>Lorem ipsum dolor</title> 
    <comments> 
    <item> 
     <id>3</id> 
    </item> 
    </comments> 
    <medias> 
    <item> 
     <id>4</id> 
     <title>Media 1</title> 
    </item> 

     <item> 
     <id>8</id> 
     <title>Media 2</title> 
     </item> 
    </medias> 
    </item> 

</feed> 
</xml> 

私のオブジェクトは、このようなものです私のXMLです:

XmlTag.java

@Root(name = "item", strict = false) 
public class XmlTag{ 

    @Path("feed") 
    @ElementList(name = "item", required = false) 
    private List<FeedTag> feeds; 

    //empty constructor, setter, getter...  

} 

FeedTag.java

@Root(name = "item", strict = false) 
public class FeedTag{ 

    @Element(name = "title", required = false) 
    private String title; 

    @Path("comments") 
    @ElementList(name = "item", required = false) 
    private List<CommentTag> comments; 

    @Path("medias") 
    @ElementList(name = "item", required = false) 
    private List<MediaTag> medias; 

    //empty constructor, setter, getter...  

} 

とCommentTagとMediaTagはFeedTagに似ています。

答えて

0

私は最終的にいくつかのコードの後に​​私のコードで間違っていることを見つけました。T & Es。

@ElementList(name = "item", required = false)の行にはinline=trueが含まれていませんでした。私の試行錯誤の中で、そのパラメータでは、simplexmlは、 `のタグ<item/>子を直接解析するだけで、他のタグではまだ使われていません。

だから、限り、私は可能な重複タグ名を持つタグのいずれか@ElementListinline=trueを持っていることを確認するよう、私は前に得たPersistenceExceptionは戻りません。

関連する問題