-1
<a>
<b>
<c>ccc</c>
<version> 1.0.0</version>
<description> description </description>
</b>
</a>
我想用gradle任务中的不同值替换xml文件中版本的值。你能帮助如何实现这一点。Gradle任务用xml文件替换属性值
<a>
<b>
<c>ccc</c>
<version> 1.0.0</version>
<description> description </description>
</b>
</a>
我想用gradle任务中的不同值替换xml文件中版本的值。你能帮助如何实现这一点。Gradle任务用xml文件替换属性值
以下groovy代码更新给定值的指定元素的值。您可以使用它来创建相同的任务。
def xmlString = """<a> <b> <c>ccc</c> <version> 1.0.0</version> <description> description </description> </b> </a>"""
def element = 'version'
def newVersion = '2.0.0'
def xml = new XmlSlurper().parseText(xmlString)
xml.'**'.find{it.name() == element}.replaceBody(newVersion)
println groovy.xml.XmlUtil.serialize(xml)
您可以快速地在线试用demo
编辑基于OP评论:
使用XmlParser and XmlNodePrinter
。
def xmlString = """<a> <b> <c>ccc</c> <version> 1.0.0</version> <description> description </description> </b> </a>"""
def element = 'version'
def newVersion = '2.0.0'
def xml = new XmlParser().parseText(xmlString)
xml.'**'.find{it.name() == element}.replaceNode{"$element" newVersion}
new XmlNodePrinter().print(xml)
这似乎是工作,但它也增加了以下报头添加到内容 “<?XML版本=” 1.0" 编码=‘UTF-8’?><结构>” 我们是否有任何其它除此之外的方法。 谢谢 – Sammy
你还需要什么其他方法?你能详细说明你的意思吗? – Rao
如果我使用上面的脚本输出是 <?XML版本= “1.0” 编码= “UTF-8”?> CCC 2.0.0 描述描述> 但我想输出是 CCC 2.0.0 描述描述> –
Sammy