@ Атрибут и префиксы в Android SimpleXml - PullRequest
0 голосов
/ 31 марта 2019

У меня есть XML-файл с такой структурой:

(элемент в списке, но я удалил дополнения для экономии места.)

<rss xmlns:media="http://test.yadayada.com/" xmlns:atom="http://test2/yada/da" version="1.0">
    <channel> 
        <item>
            <dev:content url="http://fredflinstone.barney.net.mp4" language="en-us" fileSize="37000000" duration="120.0" medium="video" isDefault="true">
            <dev:title type="plain">Flinstones</media:title>
            <dev:credit role="author" scheme="urn:ebu">Amazon</media:credit>
            <dev:thumbnail url="http://pichere.s3-webs.com/images.jpg"/>
        </item>
    </channel>
</rss>

Я пытался разобрать его с помощью SimpleXml, но у меня возникли некоторые проблемы:

@Root(strict = false)
@NamespaceList({
@Namespace(prefix = "media", reference = "http://test.yadayada.com/"),
@Namespace(reference = "http://test2/yada/da", prefix = "atom")})

public class Rss { 
@Version(revision = 1.0)
    private double version;

  @Element
    private Channel channel;

@Root(strict = false)
    public static class Channel { 

  @ElementList
    private List<Item> item;

@Root(strict = false)
    public static class Item { 

  @Element
    private String title;

  @Element
  @Namespace(prefix = "dev")
    private content content;

@Root(strict = false)
@Namespace(prefix = "dev")
     public static class content {

   @Element
     private String thumbnail;

          @Attribute(name = "url")
          private String url;

          @Attribute(name = "language")
          private String language;

          @Attribute(name = "fileSize")
          private int fileSize;

          @Attribute(name = "duration")
          private double duration;

          @Attribute(name = "medium")
          private String medium;

          @Attribute(name = "isDefault")
          private boolean isDefault;

Когда я пытаюсь запустить его, я получаю сообщение об ошибке:

org.simpleframework.xml.core.ValueRequiredException: Unable to satisfy @org.simpleframework.xml.Element(data=false, name=, required=true, type=void) on field 'content' private com.example.Rss$Channel$Item$content com.example.Rss$Channel$Item.content for class com.example.Rss$Channel$Item at line -1

Как правильно аннотировать это, чтобы оно работало? Кажется, я не могу получить dev: content и все его атрибуты, правильно аннотированные.

...