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 

который я догадался вызван неправильно отображение XML в класс POJO.

Итак, может ли кто-нибудь сказать мне, что случилось с моим кодом? Я попытался взглянуть на примеры и учебники SimpleXML, но я не могу найти информацию с примером использования, например, моим. (Это мой первый раз, работая с Модернизированный и/или SimpleXML.)

Это мой XML

<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> 

Мои объекты, как это:

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/> дочерний элемент данного @Path', so other tags with same tag name is safe as their `тег еще не использовался другими тегами.

Таким образом, до тех пор, как я убеждаюсь, что любое @ElementList тегов, которые можно повторяющееся имя тега inline=true, то PersistenceException я до этого не вернется.