XPath //div[contient(text(), 'string')] ne parvient pas à sélectionner les divs contenant 'string'
Voici le code HTML:
<div> <span></span> Elangovan </div>
Je veux écrire un XPath pour la div
basé sur son contenu texte. J'ai essayé
//div[contains(text(),'Elangovan')]
mais ce n'est pas de travail.
OriginalL'auteur Elangovan S | 2014-11-29
Vous devez vous connecter pour publier un commentaire.
Remplacer
text()
avecstring()
:Ou, vous pouvez vérifier que
span
'texte suivant frère contient le texte:Voir aussi:
OriginalL'auteur alecxe
Alternativement à alecxe la réponse correcte (+1), le suivant un peu plus simple et un peu plus idiomatiques XPath fonctionnera de la même manière:
La raison que votre original XPath avec
text()
ne fonctionne pas est quetext()
sélectionne tout le texte enfants du nœud dediv
. Cependant,contains()
attend une chaîne dans son premier argument, et, quand donné un ensemble de nœuds, des nœuds de texte, il utilise uniquement le premier. Ici, le premier nœud de texte contient des espaces, pas la recherché après la chaîne, de sorte que le test échoue. Avec l'implicite.
ou explicitestring()
premier argument, tout nœud de texte descendants sont concaténées ensemble avant d'effectuer lacontains()
de test, de sorte que le test passe.OriginalL'auteur kjhughes
À faire @kjhughes est déjà une bonne réponse un peu plus précise, ce que vous êtes vraiment à la demande, c'est une manière de rechercher des sous-chaînes dans le
div
's chaîne de valeur:À la fois le nœud de contexte (
.
ou ladiv
lui-même) et l'ensemble des nœuds retournés partext()
-- ou tout autre argument! -- sont d'abord converties en chaînes de caractères lorsqu'il est passé àcontains
. C'est juste qu'ils sont convertis en différentes manières, parce que l'on se réfère à un seul élément et l'autre se réfère à un node-set.Un seul élément de la chaîne de valeur est la concaténation de la chaîne de valeurs de l'ensemble de ses nœud de texte descendants. Un nœud de l'ensemble de la chaîne de valeur, en revanche, est la chaîne de valeur du nœud dans l'ensemble qui est premier dans l'ordre du document.
La vraie différence, c'est ce que vous êtes à la conversion d'une chaîne de caractères et la façon dont la conversion a lieu.
OriginalL'auteur Wayne Burkett