Ответ 1
Попробуйте аннотировать класс AlbumList
следующим образом:
@Root
public class AlbumList {
@ElementList(entry="album", inline=true)
private List<Child> albums;
public List<Child> getAlbums() {
return albums;
}
}
Я использую org.simpleframework.xml для обработки некоторых задач xml для приложения android, и я запускаю следующую ошибку, которую я не могу понять.
org.simpleframework.xml.core.PersistenceException: Element 'album' is already used with @org.simpleframework.xml.ElementList(inline=false, name=album, entry=, data=false, empty=true, required=true, type=void) on field 'albums' private java.util.List us.blah.sonar.xsd.simple.AlbumList.albums at line 5
at org.simpleframework.xml.core.Variable$Adapter.read(Variable.java:484)
at org.simpleframework.xml.core.Composite.readVariable(Composite.java:613)
at org.simpleframework.xml.core.Composite.readInstance(Composite.java:573)
Вот пример XML, который я пытаюсь размонтировать:
<albumList>
<album id="3985" parent="3301" title="Bob Dylan - The Reissue Series Sampler" album="Bob Dylan - The Reissue Series Sampler" artist="48 - Masked and Anonymous [BSO] (2003)" isDir="true" created="2011-12-09T11:52:12"/>
<album id="3986" parent="3301" title="Soundtrack - Masked & Anonymous" album="Soundtrack - Masked & Anonymous" artist="48 - Masked and Anonymous [BSO] (2003)" isDir="true" coverArt="3986" created="2011-12-09T11:52:13"/>
<album id="10542" parent="145" title="A Perfect Circle" album="Acoustica" artist="A Perfect Circle" isDir="true" created="2011-12-09T12:01:52"/>
</albumList>
И вот POJO, которые я создал и аннотировал:
@Root
public class AlbumList {
@ElementList(name="album")
private List<Child> albums;
public List<Child> getAlbums() {
return albums;
}
}
public class Child {
@Attribute
private String id;
@Attribute(required=false)
private String parent;
@Attribute
private boolean isDir;
@Attribute
private String title;
@Attribute(required=false)
private String album;
@Attribute(required=false)
private String artist;
@Attribute(required=false)
private int track;
@Attribute(required=false)
private int year;
@Attribute(required=false)
private String genre;
@Attribute(required=false)
private String coverArt;
@Attribute(required=false)
private long size;
@Attribute(required=false)
private String contentType;
@Attribute(required=false)
private String suffix;
@Attribute(required=false)
private String transcodedContentType;
@Attribute(required=false)
private String transcodedSuffix;
@Attribute(required=false)
private int duration;
@Attribute(required=false)
private int bitRate;
@Attribute(required=false)
private String path;
@Attribute(required=false)
private boolean isVideo;
@Attribute(required=false)
private String userRating;
@Attribute(required=false)
private double averageRating;
@Attribute(required=false)
private int discNumber;
@Attribute(required=false)
private Date created;
@Attribute(required=false)
private Date starred;
@Attribute(required=false)
private String albumId;
@Attribute(required=false)
private String artistId;
@Attribute(required=false)
private MediaType type;
}
Может ли кто-нибудь привести меня в правильном направлении, как я могу исправить проблему, или что это означает это сообщение об ошибке? Это потому, что элемент XML называется альбомом, и есть атрибут, также называемый альбомом?
Попробуйте аннотировать класс AlbumList
следующим образом:
@Root
public class AlbumList {
@ElementList(entry="album", inline=true)
private List<Child> albums;
public List<Child> getAlbums() {
return albums;
}
}