Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何将此xml解析为java对象(2+;SimpleXML)?(PersistenceException错误)_Android_Xml_Retrofit2_Simple Framework_Simple Xml Converter - Fatal编程技术网

Android 如何将此xml解析为java对象(2+;SimpleXML)?(PersistenceException错误)

Android 如何将此xml解析为java对象(2+;SimpleXML)?(PersistenceException错误),android,xml,retrofit2,simple-framework,simple-xml-converter,Android,Xml,Retrofit2,Simple Framework,Simple Xml Converter,我的改装呼叫失败,出现错误: 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 j

我的改装呼叫失败,出现错误:

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>

0
乱数假文
1.
同侧阴唇
3.
4.
媒体1
8.
媒体2
我的对象是这样的:

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

}
@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...    

}
@Root(name=“item”,strict=false)
公共类XmlTag{
@路径(“提要”)
@元素列表(name=“item”,必选项=false)
私有列表提要;
//空构造函数、setter、getter。。。
}
FeedTag.java

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

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

   //empty constructor, setter, getter...    

}
@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...    

}
@Root(name=“item”,strict=false)
公共类FeedTag{
@元素(name=“title”,required=false)
私有字符串标题;
@路径(“注释”)
@元素列表(name=“item”,必选项=false)
私人名单评论;
@路径(“媒体”)
@元素列表(name=“item”,必选项=false)
私有列表媒体;
//空构造函数、setter、getter。。。
}

CommentTag和MediaTag与FeedTag类似。

经过一些测试和测试,我终于发现了我的代码有什么问题

这是因为
@ElementList(name=“item”,required=false)
行中没有
inline=true
。根据我的反复试验,使用该参数,simplexml只解析给定路径的直接子项,因此具有相同标记名的其他标记是安全的,因为它们的标记尚未被其他标记使用

因此,只要我确保任何具有可能重复标记名的标记的
@ElementList
都具有
inline=true
,我之前得到的
PersistenceException
就不会返回