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은 주어진 @Path', so other tags with same tag name is safe as their`의 자식 <item/> 자식을 단지 다른 태그로 아직 구문 분석하지 않았다.

그래서 오랫동안 나는 가능한 중복 태그 이름이 inline=true을 가지고있는 태그의 @ElementList은, 내가 전에받은 PersistenceException는 반환하지 않습니다 있는지 확인한다.