当前位置: 首页 > 面试题库 >

解析xml kotlin android

吴品
2023-03-14
问题内容

我有这样的XML:

<horo>
<aries>
<today>
Сегодня вас могут здорово огорчить. Если от расстройства все начнет валится из рук, просто спокойно сядьте и тихонько подождите хорошей новости.
</today>
</aries>
<taurus>
<today>
Сегодня у вас могут возникнуть проблемы на личном фронте. Спасти вас от перспективы оказаться не у дел может сухой, рациональный и в высшей степени объективный подход к проблеме.
</today>
</taurus>
</horo>

现在,我学习Kotlin进行翻新。我包括用于解析xml的库,但我不明白如何创建用于解析此xml的对象。我有对象:

@Root(name = "horo", strict = false)
open class DailyHoroscope{
    @get : Element(name = "aries") var aries : Aries? = null
}

@Root(name = "aries", strict = false)
open class Aries{
    @get : Element(name = "today") var today : String? = null
}

但我有错误:

rg.simpleframework.xml.core.ConstructorException:默认构造函数无法接受类ac中方法“ aries”上的@
org.simpleframework.xml.Element(data = false,name = aries,required =
true,type = void)只读.kotlintest.model。

更新

我用Java编写了代码:

@Root(name = "horo", strict = false)
public class DailyHoroscopeJ {
    @Element(name = "aries")
    public Aries aries;

    public Aries getAries() {
        return aries;
    }

    public void setAries(Aries aries) {
        this.aries = aries;
    }
}

@Root(name = "aries", strict = false)
 class Aries{
    @Element(name = "today")
    public String today;

    public String getToday() {
        return today;
    }

    public void setToday(String today) {
        this.today = today;
    }
}

它工作正常,然后我转换为Kotlin

@Root(name = "horo", strict = false)
class DailyHoroscope {
    @get:Element(name = "aries")
    var aries:Aries? = null
}
@Root(name = "aries", strict = false) class Aries {
    @get:Element(name = "today")
    var today:String? = null
}

但我有同样的问题(((((


问题答案:

@daementus的答案几乎是完美的。如果要对默认参数使用构造函数注入,则必须强制Kotlin生成构造函数重载:

data class Section @JvmOverloads constructor(

    @field:Element(name = "id")
    @param:Element(name = "id")
    val id: Long,

    @field:Attribute(name = "title", required = false)
    @param:Attribute(name = "title", required = false)
    val title: String = ""
)

没有它,您将获得 与Section部分不匹配的Constructor 。默认情况下,Kotlin生成具有所有参数和特殊构造函数的构造函数。

注意:我希望在评论中回答,但我的观点不够。



 类似资料:
  • plugins/kibana/public/dashboard/index.js 结构跟 visualize 类似,设置两个调用 savedDashboards.get() 方法的 routes,提供一个叫 dashboard-app 的 directive。 savedDashboards 由 plugins/kibana/public/dashboard/services/saved_dash

  • index.js 中,首要当然是注册自己。此外,还加载两部分功能:plugins/kibana/visualize/editor/* 和 plugins/kibana/visualize/wizard/wizard.js。然后定义了一个 route,默认跳转 /visualize 到 /visualize/step/1。 editor editor.js 中也定义了两个 route,分别是 /vi

  • 前文已经说到,kibana.js 中依次加载了各主要功能模块的入口。比如搜索页是 src/core_plugins/kibana/public/discover/index.js。通过这个文件路径就可以猜到,有关搜索页的功能,代码应该都在 src/core_plugins/kibana/public/discover/ 里了。这个目录下的文件有: _hit_sort_fn.js component

  • 词法解析、语法解析 这一节我们分析下PHP的解析阶段,即 PHP代码->抽象语法树(AST) 的过程。 PHP使用re2c、bison完成这个阶段的工作: re2c: 词法分析器,将输入分割为一个个有意义的词块,称为token bison: 语法分析器,确定词法分析器分割出的token是如何彼此关联的 例如: $a = 2 + 3; 词法分析器将上面的语句分解为这些token:$a、=、2、+、3

  • 问题内容: 我正在创建一个复杂的JavaScript库,用于与公司的服务器端框架一起使用。 服务器端框架将其数据编码为简单的XML格式。没有花哨的命名空间或类似的东西。 理想情况下,我想将浏览器中的所有数据解析为JSON。但是,如果这样做,我需要重写一些服务器端代码以吐出JSON。这很痛苦,因为我们拥有无法轻易更改的公共API。 我真正关心的是浏览器中解析JSON和XML的性能。真的有很大的区别要

  • 问题内容: 我有如下所示的HTML内容。我在这里寻找的标签是和。Java是否提供任何HTML解析技术? 问题答案: String value = Jsoup.parse(new File(“d:\1.html”), “UTF-8”).select(“img”).attr(“src”); System.out.println(value); //http://socialimg04.rediff.c

  • 问题内容: 我有这个日期,似乎无法正确解析。 字符串文本“ 2014年5月21日星期三05:44:09 -0700”; 这是我的日期格式 我正在尝试使用SimpleDateFormat对其进行解析。 错误字符串无法分析。 我在这里做错了。 请注意,这不是重复项。另一个问题中没有描述使用强制语言环境的解决方案。 问题答案: 要解析您的日期,您可以使用 但是如果失败了,您会看到 java.text.P

  • 问题内容: 我在我的应用程序中收到一些json数据: 哪个日志: 这正是我想要的。 但是,当我去阅读电子邮件的价值时, 我收到无效的参数异常: 由于未捕获的异常’NSInvalidArgumentException’而终止应用程序,原因:’ * -[NSDictionary initWithDictionary:copyItems:]:字典参数不是NSDictionary’ 如何读取此值? 问题答