2016-07-14 5 views
1

Ich analysiere eine XML-Datei in Groovy und später muss ich die zurückgegebenen Variablen anhängen.Wie hängt man mehrere Strings in Groovy an?

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

Dies funktioniert nicht zum Anhängen der 3 Strings. Es weist nur die erste Zeichenfolge rechts zu. Wie man es in Groovy richtig implementiert? Ich habe versucht, concat und es warf den folgenden Fehler:

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 
+0

Können Sie einige Beispiel XML geben? –

Antwort

1

Als Alternative zu injecteer -

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

Sie haben nicht versucht, Strings hinzuzufügen, Sie haben versucht, Knoten hinzuzufügen, die Strings enthalten.

2

Yor Code soll wie folgt aussehen:

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

Die Ausnahme, die Sie Mittel bekommen, dass Sie die plus()/concat() Methode aufzurufen versuchen, die nicht vorgesehen ist von NodeChildren

+0

Ich mag die deklarative Ihr Code Sollen aussehen: - sehr nett :) –

1

die xml Unter der Annahme, sieht so aus:

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

sollten Im Folgenden geben, was erwartet wird:

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