程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)?

开发过程中遇到Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)的问题如何解决?下面主要结合日常开发的经验,给出你关于Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)的解决方法建议,希望对你解决Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)有所启发或帮助;

尝试添加@fIEld到注释中@Element*。您可以将属性移动到构造函数,也可以data在类中添加修饰符。像这样:

@Root(name = "Feed", Strict = falsE)
data class Feed(
        @fIEld:ElementList(name = "entry", inline = truE)
        var entrIEsList: List<Entry>? = null
)

@Root(name = "entry", Strict = truE)
data class Entry(
        @fIEld:Element(name = "ID")
        var ID: String? = null,

        @fIEld:Element(name = "published")
        var published: String? = null
)

有了这个,我就成功地反序列化了xml:

import org.simpleframework.xml.Element
import org.simpleframework.xml.ElementList
import org.simpleframework.xml.Root
import org.simpleframework.xml.core.Persister

private val testXml = """
<Feed>
   <entry>
        <ID> somEID </ID>
        <published> somedate </published>
   </entry>

   <entry>
        <ID> somEID2 </ID>
        <published> somedate2 </published>
   </entry>
</Feed>
""".trimIndent()

@Root(name = "Feed", Strict = falsE)
data class Feed(
        @fIEld:ElementList(name = "entry", inline = truE)
        var entrIEsList: List<Entry>? = null
)

@Root(name = "entry", Strict = truE)
data class Entry(
        @fIEld:Element(name = "ID")
        var ID: String? = null,

        @fIEld:Element(name = "published")
        var published: String? = null
)

fun main(args: Array<String>) {
    println(testXml)

    val serializer = Persister()

    val example = serializer.read(Feed::class.java, testXml)

    println(examplE)
}

解决方法

我试图通过Retrofit
2使用SimpleXML来使用XML。在与Kotlin进行了数小时的挣扎之后,我决定尝试Java版本,然后再转换为Kotlin。Java版本运作良好&Hellip;

错误:

java.lang.RuntimeException: org.simpleframework.xml.core.MethodException: Annotation @org.simpleframework.xml.ElementList(data=false,empty=true,entry=,inline=true,name=entry,required=true,type=void) must mark a set or get method

我需要一个能够使用该XML的Kotlin模型类。输入如下:

<feed>
   <entry>
        <id> somEID </id>
        <published> somedate </published>
   </entry>

   <entry>
        <id> somEID2 </id>
        <published> somedate2 </published>
   </entry>
</feed>

Java模型类版本(工作正常):

@Root(name = "feed",Strict = falsE)
public class MFeed {
    @ElementList(name = "entry",inline = truE)
    private List<MEntry> entriesList;

    public MFeed(List<MEntry> entriesList) {
        this.entriesList = entriesList;
    }

    public MFeed() {
    }

    public List<MEntry> getEntriesList() {
        return entriesList;
    }

    public void setEntriesList(List<MEntry> entriesList) {
    this.entriesList = entriesList;
    }
}

@Root(name = "entry",Strict = falsE)
public class MEntry {

    @Element(name = "id")
    private String id;

    @Element(name = "published")
    private String published;

    public MEntry() {
    }

    public MEntry(String id,String published) {
        this.id = id;
        this.published = published;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getPublished() {
        return published;
    }

    public void setPublished(String published) {
        this.published = published;
    }
}

自动生成的Kotlin模型如下所示:

@Root(name = "feed",Strict = falsE)
class Feed {
    @ElementList(name = "entry",inline = truE)
    private var entriesList: List<MEntry>? = null

    //autogenerated by converter java -> kotlin
    constructor(entriesList: List<MEntry>) {
        this.entriesList = entriesList
    }

    //autogenerated by converter java -> kotlin
    constructor() {}
}

@Root(name = "entry",Strict = falsE)
class Entry {
    @Element(name = "id")
    var id: String? = null

    @Element(name = "published")
    var published: String? = null

    //autogenerated by converter java -> kotlin
    constructor() {}

    //autogenerated by converter java -> kotlin
    constructor(id: String,published: String) {
        this.id = id
        this.published = published
    }
}

我为使用XML列表而付出了很多,包括this。没有工作。也许它们已经过时了。有人遇到这样的问题吗?

大佬总结

以上是大佬教程为你收集整理的Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)全部内容,希望文章能够帮你解决Kotlin 1.2.21 + SimpleXml 2.3.0-使用列表错误(必须将标记设置为get方法)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。