2010-01-04 5 views
44

J'essaie d'extraire un élément avec un innertext particulier à partir d'un document XML analysé. Je sais que je peux sélectionner un élément qui a un enfant avec un innertext particulier en utilisant //myparent[mychild='foo'], mais je veux juste sélectionner l'élément "mychild" dans cet exemple.Sélection de XPath par innertext

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

Quelle serait la requête XPath pour « foo » qui renverrait le noeud « mychild »?

Répondre

69

Avez-vous essayé?

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

Vous pouvez également utiliser le raccourci pour l'axe self:

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

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

+0

@subisting: Merci, c'est exactement ce dont j'avais besoin. – kdt

+2

@Matt: si OP souhaite sélectionner l'élément mychild, alors votre solution ne fonctionnera pas, elle sélectionnera l'élément myparent. – glmxndr

3

Matt a dit, mais la solution complète: // MonParent [mychild = 'foo']/mychild

+0

il recherche tous les nœuds enfants de "myparent" où tout "mychild" de "myparent" a "foo" comme texte interne. – Civa