我要解开
<item>
<a10:author>
<a10:name>AuthorName</a10:name>
</a10:author>
</item>
到
data class Item(val author:String)
如果可能,通过阅读 author/name
进入 author
直接输入字段。如果不能以干净/简单的方式实现,我想创建 Author
与…同班 name
字段,如下所示。在下面的代码中, author.name
是空的,但不应该是。为什么是空的?
示例xml
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
<channel xmlns:os="http://a9.com/-/spec/opensearch/1.1/">
<title>SomeTitle</title>
<link>https://google.com</link>
<description>SomeDescription</description>
<os:totalResults>49</os:totalResults>
<item>
<link>https://google.com</link>
<a10:author>
<a10:name>AuthorName</a10:name>
</a10:author>
<title>SomeTitle</title>
<description>SomeDesc</description>
<pubDate>Fri, 06 Nov 2020 07:59:27 Z</pubDate>
</item>
</channel>
</rss>
所有模型类:
@XmlRootElement(name = "rss", namespace = "http://www.w3.org/2005/Atom")
@XmlAccessorType(XmlAccessType.FIELD)
data class Rss(val channel: RssChannel?) {
constructor() : this(channel = null)
}
@XmlRootElement(name = "channel", namespace = "http://a9.com/-/spec/opensearch/1.1/")
@XmlAccessorType(XmlAccessType.FIELD)
data class RssChannel (val link: String,
val title: String,
val description: String,
@field:XmlElement(namespace = "http://a9.com/-/spec/opensearch/1.1/")
val totalResults: Int,
@field:XmlElement(name = "item")
val items: List<Item>?) {
constructor() : this(link = "", title = "", description = "", totalResults = 0, items = null)
}
@XmlAccessorType(XmlAccessType.FIELD)
data class Item( val title: String,
val description: String,
val link: String,
@field:XmlElement(namespace = "http://www.w3.org/2005/Atom")
val author: Author,
val pubDate: String) {
constructor() : this(title = "", description = "", link = "", author = Author(), pubDate = "")
}
@XmlAccessorType(XmlAccessType.FIELD)
data class Author(@XmlElement(namespace = "http://www.w3.org/2005/Atom")
val name: String) {
constructor() : this(name = "")
}
1条答案
按热度按时间fhg3lkii1#
1) 错误是
@field:XmlElement
而不是@XmlElement
这是kotlin属性/字段区分错误。从
到
2) 另一个解决方案使用
@XmlAnyElement
(额外的复杂性)但我还是不知道
Author
分类和使用data class Item(val author:String)
相反,这是可能的