【问题标题】:Kotlin replacement for groovy XmlSlurper & MarkupBuilderKotlin 替换 groovy XmlSlurper 和 MarkupBuilder
【发布时间】:2020-07-28 22:13:14
【问题描述】:

我想我会在我们的 Android 项目的 gradle 构建脚本中用 Kotlin 替换 groovy,这样我就可以开始学习 Kotlin,但我遇到的第一个问题是试图寻找一些可以替换 XmlSlurper 和 MarkupBuilder 的类或库。有人可以推荐一个库或类来使用吗?

def entries = new XmlSlurper().parse("${projectDir}/src/release/res/values/app_settings.xml")
    def fileLocation = "${projectDir}/src/debug/res/xml/env_prod.xml"
    println "XML file location = ${fileLocation}"
    def writer = new FileWriter(new File(fileLocation))
    def xmlOut = new MarkupBuilder(writer)
    xmlOut.mkp.xmlDeclaration(version: "1.0", encoding: "utf-8")
    xmlOut.Environment {
        entries.string.each {
            def name = it.@name.toString()
            def body = it.text()
            if (name.startsWith('default_')) {
                // don't copy production omniture when we're doing local testing!
                name = name.replace('default_', '').toUpperCase()
                xmlOut.entry(['name' : name], body)
            }
        }
    }

【问题讨论】:

  • 那些库似乎可以从 Java 中使用,因此它们可以直接从 Kotlin 中使用,不是吗?

标签: groovy kotlin


【解决方案1】:

对于 MarkupBuilder,您可以使用 withGroovyBuilder 方法,因此您绝对可以这样做来开始构建 Environment

val xmlOut = MarkupBuilder(writer)
xmlOut.mkp.xmlDeclaration(mapOf("version" to "1.0", "encoding" to "utf-8"))
xmlOut.withGroovyBuilder {
    "Environment"() {
     // the logic would go here
    }
}

我记不太清楚 groovy 了,所以我真的帮不上其他忙。迭代来自 XmlSlurper 的条目看起来有问题。如果您只是将配置存储在这些 XML 文件中,我建议您切换到 JSON 或 HOCON。读和写这些会容易得多;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 1970-01-01
    相关资源
    最近更新 更多