2010-01-04 12 views
44

Estoy tratando de extraer un elemento con un texto interno particular de un documento XML analizado. Sé que puedo seleccionar un elemento que tenga un hijo con un texto interno particular usando //myparent[mychild='foo'], pero en realidad solo quiero seleccionar el elemento "mychild" en este ejemplo.Selección de XPath por innertext

<myparent> 
    <mychild> 
    foo 
    </mychild> 
</myparent> 

¿Cuál sería la consulta de XPath para "foo" que devolvería el nodo "mychild"?

Respuesta

69

¿Has probado esto?

//myparent/mychild[text() = 'foo'] 

Alternativamente, puede utilizar el acceso directo para el eje self:

//myparent/mychild[. = 'foo'] 
+4

o // myparent [mychild = 'foo'] –

+0

@subtenante: Gracias, eso es exactamente lo que necesitaba. – kdt

+2

@Matt: si OP desea seleccionar el elemento mychild, entonces su solución no funcionará, seleccionará el elemento myparent. – glmxndr

3

Matt dijo, pero la solución completa: // myparent [Mi hijo = 'foo']/Mi hijo

+0

busca en todos los nodos secundarios de "myparent" donde cualquier "mychild" de "myparent" tiene "foo" como texto interno. – Civa

Cuestiones relacionadas