【问题标题】:Converting XML response to POJO using SimpleXMLConverter in Retrofit在 Retrofit 中使用 SimpleXMLConverter 将 XML 响应转换为 POJO
【发布时间】:2017-03-31 15:04:18
【问题描述】:

我被困在下面的这个错误中。 这是 XML 响应

<rss xmlns:content="http://purl.org/rss/1.0/modules/content/"     xmlns:dcterms="http://purl.org/dc/terms/"  xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        <title>SnagFilms Recent Additions</title>
        <item>
            <media:title>Sink or Swim - Trailer</media:title>
            <title>Sink or Swim - Trailer</title>
            <media:description> Jon Bowermaster's documentary on a learn-to-swim camp for third graders and their moms on the island-nation of the Maldives
            </media:description>
            <media:credit role="Director" scheme="urn:ebu">Jon Bowermaster</media:credit>
            <media:thumbnail type="landscape" url="http://snagfilms-a.akamaihd.net/sinkorswim-video.jpg"/>
            <media:content duration="117" height="323"  width="500"/>
            <media:rights status="official"/>
            <media:player height="323" url="http://embed.snagfilms.com/embed/player?filmId=00000158-b20c-d8f9-affd-b32ce8700000" width="500"/>
         </item>
    </channel>
</rss>

这是我使用 observable 的 Rest Call 代码

rx.Observable<Rss> videosObservable = RetrofitHelper.createListObs();
    videosObservable.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Subscriber<Rss>() {
                @Override
                public void onCompleted() {

                    Log.d(TAG, "onCompleted: ");
                }

                @Override
                public void onError(Throwable e) {
                    Log.d(TAG, "onError: " + e.toString());
                }

                @Override
                public void onNext(Rss rss) {
                    Log.d(TAG, "onNext: " );

                }
            });

这是我遇到的错误

onError: java.lang.RuntimeException: org.simpleframework.xml.core.ElementException: Element 'item' does not have a match in class com.example.singh.xmlParser.model.Channel at line 12

我的 Rss 课程

@Root(strict = false)
public class Rss {

public Channel getChannel() {
    return channel;
}
@Element
public Channel channel;

}

我的频道类

@Element
public class Channel {

@Element(name = "title")
String title;


@ElementList
List<Item> items;

public List getItems(){
    return items;
}

}

我需要帮助为 Java 中的 XML 制作正确的 POJO。如果有人可以为给定格式制作所有 POJO,我将不胜感激。回复链接http://www.snagfilms.com/feeds/。转换器文档http://simple.sourceforge.net/home.php

【问题讨论】:

  • 请也分享您的 RetrofitHelper 课程。

标签: android xml rx-java retrofit2 simple-xml-converter


【解决方案1】:

您的items 列表是channel 对象内的内联列表。您必须在注释中指定:

@ElementList(inline=true)
List<Item> items;

检查official documentation

【讨论】:

  • 是的,我想通了。无论如何,谢谢。
猜你喜欢
  • 2017-07-20
  • 1970-01-01
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多