Groovy - 修改 xml 文件值
Groovy - Modify xml file value
我有一个 XML 文件,我正在下面粘贴我的 xml 文件。我想使用 groovy 脚本更改 splash_color 的值。我试图解析它但无法成功。
XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="splash_color">#D3B61A</color>
</resources>
Groovy代码:
def xmlFile = "$androidWorkingDirPath/app/src/main/res/values/colors.xml"
def xml = new XmlParser().parse(xmlFile)
xml.color[0].each {
//it.@name = "test2"
//it.value = "test2"
println("it.value=$it.value")
println("it.value=$it.value.name")
}
new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).println("Xmlvalue=$xml")
下面的作品。
def xmlFile = '''<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="splash_color">#D3B61A</color>
</resources>
'''
您可以使用 XmlUtil.serialize
而不是 new XmlNodePrinter(new PrintWriter(new FileWriter
...
import groovy.xml.XmlUtil
我正在使用 parseText()
因为在这个例子中我没有从文件中读取
def resources = new XmlParser().parseText(xmlFile)
这里可以不用[0]
,但是如果同名节点比较多,就用findAll()
resources.color.each {
使用${}
在字符串中插入变量
println "it.value=${it.value}"
println "it.name=${it.@name}"
}
println XmlUtil.serialize(resources)
您可以将其通过管道传输到文件。
节点替换见this
我有一个 XML 文件,我正在下面粘贴我的 xml 文件。我想使用 groovy 脚本更改 splash_color 的值。我试图解析它但无法成功。 XML
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="splash_color">#D3B61A</color>
</resources>
Groovy代码:
def xmlFile = "$androidWorkingDirPath/app/src/main/res/values/colors.xml"
def xml = new XmlParser().parse(xmlFile)
xml.color[0].each {
//it.@name = "test2"
//it.value = "test2"
println("it.value=$it.value")
println("it.value=$it.value.name")
}
new XmlNodePrinter(new PrintWriter(new FileWriter(xmlFile))).println("Xmlvalue=$xml")
下面的作品。
def xmlFile = '''<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="splash_color">#D3B61A</color>
</resources>
'''
您可以使用 XmlUtil.serialize
而不是 new XmlNodePrinter(new PrintWriter(new FileWriter
...
import groovy.xml.XmlUtil
我正在使用 parseText()
因为在这个例子中我没有从文件中读取
def resources = new XmlParser().parseText(xmlFile)
这里可以不用[0]
,但是如果同名节点比较多,就用findAll()
resources.color.each {
使用${}
在字符串中插入变量
println "it.value=${it.value}"
println "it.name=${it.@name}"
}
println XmlUtil.serialize(resources)
您可以将其通过管道传输到文件。
节点替换见this