2017-05-08 2 views
0

also zu den acces ich durch meine xml-Datei wie folgt bin Iterieren:Wie bestimmte XML-Attribute für einen bestimmten Knoten

def root = new XmlSlurper().parseText(getServiceConfigXml()) 

println "Project attributes: ${root.attributes()}" 
root.project.each { project -> 
    println "\tProject attributes: ${project.attributes()}" 

    project.service.each { service -> 
    println "\t\tService attributes: ${service.attributes()}" 

    service.receiver.each { receiver -> 
     println "\t\tReceiver: ${receiver.attributes()}" 

     receiver.endpoint.each { endpoint -> 
     println "\t\tEndpoint: ${endpoint.attributes()} - ${endpoint.text()}" 
     } 

     receiver.endpoint.each { environment -> 
     println "\t\tEnvironment: ${environment.attributes()}" 
     } 
    } 
    } 
} 

Und hier einige ein Beispiel der XML ich Iterieren durch:

<configuration> 
    <service name='name' pattern='something' isReliable='maybe'> 
    <receiver name='name' isUsingTwoWaySsl='maybe' isWsRmDisabled='maybe' targetedByTransformation='maybe'> 
     <endpoint name='local_tst01'>URL</endpoint> 
     <endpoint name='local_tst02'>URL</endpoint> 
     <endpoint name='local_tst03'>URL</endpoint> 
     <environment name='dev' default='local_dev' /> 
     <environment name='tst01' default='test' /> 
     <environment name='tst02' default='local_tst02' /> 
    </receiver> 
    <operation name='name'> 
     <sender>sender</sender> 
     <attribute name='operation' type='String'>name</attribute> 
    </operation> 
    </service> 
</configuration> 

Nehmen Sie zum Beispiel den Empfängerknoten. Ich bin eine Ausgabe bekommen zur Zeit, die wie folgt aussieht:

Empfänger: [isWsRmDisabled: false, isUsingTwoWaySsl: true, Name: CTSS, targetedByTransformation: false]

aus dieser Codezeile

${receiver.attributes()} 

Anstatt alle Attribute zu erhalten, möchte ich auf ein bestimmtes Attribut zugreifen. Zum Beispiel der Name-Attribut, das würde wie folgt aussehen:

CTSS

Ist dies möglich, ohne dabei jede Unterkette Abhilfe?

Ich stelle mir vor so etwas wie:

${receiver.name()} 

dies jedoch Ausgänge 'Empfänger' und nicht das Attribut name

Antwort

1

${receiver.name()} gibt Ihnen den Tag-Namen.

Sie wollen: ${receiver.attributes().name}

Verwandte Themen