2010-01-04 13 views
44

Ich versuche, ein Element mit einem bestimmten internen Text aus einem geparsten XML-Dokument zu extrahieren. Ich weiß, dass ich ein Element auswählen kann, das ein Kind mit einem bestimmten internen Text hat, indem ich //myparent[mychild='foo'] benutze, aber ich will eigentlich nur das "mychild" Element in diesem Beispiel auswählen.XPath-Auswahl durch internen Text

Was wäre die XPath-Abfrage für "foo", die den "mychild" -Knoten zurückgeben würde?

Antwort

69

Haben Sie das versucht?

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

Alternativ können Sie die Verknüpfung für das self Achse verwenden:

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

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

+0

@subtenante: Danke, genau das habe ich gebraucht. – kdt

+2

@Matt: wenn OP möchte das mychild Element auswählen, dann wird Ihre Lösung nicht funktionieren, wird es das Myparent-Element auswählen. – glmxndr

3

Matt sagte es, aber die volle Lösung: // myparent [MyChild = 'foo']/MyChild

+0

Es durchsucht alle Kind-Knoten von "Myparent" wo jedes "Mychild" von "Myparent" hat "Foo" als inneren Text. – Civa