我确实有一个 API,它返回以下 XML 响应(查看屏幕截图)
我正在使用带有 XML 的 Retrofit,请检查我的依赖项:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
//retrofit XML
implementation 'com.squareup.retrofit2:converter-simplexml:2.9.0'
当我在Android中调用API时,我成功获得了响应,但是当我获得响应时,我面临以下错误。
此错误意味着“title”标签在“channel”内已经可用,因此当“title”标签在“item”标签内也可用时会发生冲突。如果您可以看到 API 响应的第一个屏幕截图,我已突出显示“标题”标签,该标签可在第一个“频道”标签以及“项目”列表中使用。
我正在使用第三方API,因此无法更改API中的标签。我需要让它适用于 Android。
这是我的数据类(POJO 类),它接受响应并尝试使用它,但收到该错误:
@Root(name = "rss", strict = false)
class RSSFeed @JvmOverloads constructor(
@field: Element(name = "channel") var channel: PodcastChannel? = null
)
@Root(name = "channel", strict = false)
class PodcastChannel @JvmOverloads constructor(
@field: Element(name = "title", required = false) var title: String? = null,
@field: ElementList(inline = true) var itemList: List<PodcastItem>? = null
)
@Root(name = "item", strict = false)
class PodcastItem @JvmOverloads constructor(
@field: Element(name = "title", required = false) var title: String = "",
@field: Element(name = "description", required = false) var description: String = "",
)
这个类似的问题已经在 1、2、3 上多次提出,但没有从中得到任何帮助。
此外,Medium.com 上的This Article 具有相同的 API 响应,因此复制了他/她的数据类并尝试使其工作,但仍然没有帮助。我不知道他的代码是如何工作的!
尝试了各种不同的方法,但没有任何帮助。
如果有人过去做过此操作或使其成功,请告诉我。
谢谢!
您可以对
Path
类的 itemList
使用 PodcastChannel
注释吗:
@Root(name = "channel", strict = false)
class PodcastChannel @JvmOverloads constructor(
@field: Element(name = "title", required = false)
var title: String? = null,
@field: ElementList(inline = true)
@field: Path("rss/channel")
var itemList: List<PodcastItem>? = null
)