2017-08-25 109 views
-1
<a> 
    <b> 
     <c>ccc</c> 
     <version> 1.0.0</version> 
     <description> description </description> 
    </b> 
</a> 

我想用gradle任务中的不同值替换xml文件中版本的值。你能帮助如何实现这一点。Gradle任务用xml文件替换属性值

回答

0

以下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) 
+0

这似乎是工作,但它也增加了以下报头添加到内容 “<?XML版本=” 1.0" 编码=‘UTF-8’?><结构>” 我们是否有任何其它除此之外的方法。 谢谢 – Sammy

+0

你还需要什么其他方法?你能详细说明你的意思吗? – Rao

+0

如果我使用上面的脚本输出是 <?XML版本= “1.0” 编码= “UTF-8”?> CCC 2.0.0 描述 但我想输出是 CCC 2.0.0 描述 Sammy