如何在Groovy中追加多个字符串?

时间:2016-07-14 20:11:54

标签: groovy

我在Groovy中解析XML文件,稍后我需要附加返回的变量。

def lmList = slurperResponse.LastGlobal.HeatMap
String appendedString = lmList.country + lmList.ResponseTime + lmList.timeset

这不能附加3个字符串。它只是将第一个字符串分配给右侧。如何在Groovy中正确实现它?我尝试了concat并抛出了以下错误:

groovy.lang.MissingMethodException: No signature of method: groovy.util.slurpersupport.NodeChildren.concat() is applicable for argument types: (groovy.util.slurpersupport.NodeChildren) values: [4468]
Possible solutions: toFloat(), collect(), collect(groovy.lang.Closure)
at 

3 个答案:

答案 0 :(得分:2)

您的代码应如下所示:

String appendedString = "${lmList.country}${lmList.ResponseTime}${lmList.timeset}"

您获得的例外意味着您尝试调用plus()/concat()未提供的NodeChildren方法

答案 1 :(得分:1)

作为injecteer的替代品 -

def lmList = slurperResponse.LastGlobal.HeatMap
String appendedString = lmList.country.toString() + lmList.ResponseTime.toString() + lmList.timeset.toString()

您没有尝试添加字符串,而是尝试添加恰好包含字符串的节点。

答案 2 :(得分:1)

假设xml看起来像:

def xml = '''
<Root>
    <LastGlobal>
        <HeatMap>
            <Country>USA</Country>
            <ResponseTime>20</ResponseTime>
            <TimeSet>10</TimeSet>
        </HeatMap>
    </LastGlobal>
</Root>
'''

下面应该给出预期的结果:

def slurped = new XmlSlurper().parseText(xml)
assert slurped.LastGlobal.HeatMap.children()*.text().join() == 'USA2010'