2011-07-17 13 views
17

¿Cómo puedo encontrar todos los elementos en XML por su nombre de etiqueta en Groovy (GPath)?¿Cómo encontrar todos los elementos XML por nombre de etiqueta en Groovy?

Tengo que encontrar todos los car elementos en este documento:

<records> 
    <first> 
    <car> 
     <id>378932</id> 
    </car> 
    </first> 
    <second> 
    <foo> 
     <car> 
     <name>audi</name> 
     </car> 
    </foo> 
    </second> 
</records> 

Esto es lo que intentó y no pudo:

def xml = new XmlSlurper().parse(file) 
assert xml.car.size() == 2 
+1

Identificación del mal cerrada –

Respuesta

30

Esta es la forma funciona:

def xml = new XmlSlurper().parse(file) 
def cars = xml.depthFirst().findAll { it.name() == 'car' } 
assert cars.size() == 2 
+0

De hecho :) Tomó un tiempo, pero ahora también soy un tipo Grails :) Gracias por su ayuda, voté por su respuesta. Sin embargo, el correcto es el mío. – yegor256

5

utilizar un XMLSlurper

def records = new XmlSlurper().parseText(file) 
reco​rds.depthFirst()​.findAll { !it.childNodes() && it.car} ​ 

/*Otherwise this returns the values for parent nodes as well*/ 
+0

Podría por favor dar un ejemplo de código de maravilloso? – yegor256

+0

Google: "groovy xml slurper" http://groovy.codehaus.org/Lectura+XML+usando+Groovy%27s+XmlSlurper –

+0

Gracias chicos, sé qué clase usar. ¿Podría explicar cómo puedo encontrar exactamente todos los elementos con una etiqueta determinada? – yegor256

14

También puede hacer: Etiqueta

def xml = new XmlSlurper().parse(file) 
def cars = xml.'**'.findAll { it.name() == 'car' } 
Cuestiones relacionadas