2010-01-04 18 views
44

Sto cercando di estrarre un elemento con un particolare testo interno da un documento XML analizzato. So che posso selezionare un elemento che ha un bambino con un particolare innertext usando //myparent[mychild='foo'], ma in realtà voglio solo selezionare l'elemento "mychild" in questo esempio.Selezione XPath per testo interno

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

Quale sarebbe la query XPath per "foo" che restituirebbe il nodo "mychild"?

risposta

69

Hai provato questo?

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

In alternativa, è possibile utilizzare la scorciatoia per il self assi:

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

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

+0

@subtenante: Grazie, è esattamente ciò di cui avevo bisogno. – kdt

+2

@Matt: se OP vuole selezionare l'elemento mychild, la soluzione non funzionerà, selezionerà l'elemento myparent. – glmxndr

3

Matt ha detto, ma la soluzione completa: // mioGenitore [mychild = 'foo']/mychild

+0

cerca tutti i nodi figli di "myparent" dove ogni "mychild" di "myparent" ha "foo" come testo interno. – Civa

Problemi correlati