Requête XPath pour sélectionner tous les attributs href de <a> tag, qui attribut 'class' est égal à chaîne spécifiée
Je ne sais pas pourquoi requête suivante ne fonctionne pas:
//a/@href[@class='specified_string']
- Comme l'attribut de classe peut contenir plusieurs noms de classe séparées par des espaces, vous avez probablement fait envie:
//a[contains(concat(' ',normalize-space(@class),' '), 'some_class_name')]/@href
- Bon point. Juste un pinaille: il est
' some_class_name '
(avec espaces), pas'some_class_name'
.
Vous devez vous connecter pour publier un commentaire.
L'essayer dans l'autre sens:
Après tout,
class
est un attribut de la<a>
élément, et non pas un attribut de lahref
attribut.NodeList
doit contenir la liste desNode
s représentant lehref
attributs. Donc, juste en cours d'exécutiongetNodeValue()
sur ces nœuds devrait vous donner lahref
attributs des valeurs.//a[@name= "topic"]
pour extraire le droit d'un des éléments. Mais//a[@name= "topic"]/@href
renvoie une liste de [, , , , , ] comme si il n'y a pas un attribut href. C'est la une "d'un élément" à titre d'exemple: <a href="/rubrique/19778287" name="sujet">XXX</a>Un attribut ne peut pas avoir des attributs. Seuls les éléments peuvent avoir des attributs.
L'origine de l'expression XPath:
sélectionne tout
href
attribut de toutea
élément, tels que lehref
attribut est un attributclass
dont la valeur est'specified_string'
.Ce que vous voulez est:
qui est: la
href
attribut de toutea
élément qui aclass
attribut avec la valeur'specified_string'
.Vous dire que vous êtes à la recherche d'un attribut nommé
href
, dont l'attribut (c'est l'erreur)class
doit être égale àspecified_string
.Mais vous avez besoin de trouver l'attribut
href
d'un élémenta
, dont l'attributclass
estspecified_string
.(ndim la réponse se chevauchent mine)
Il n'y a pas de classe de l'attribut présent dans la balise d'ancrage, j'ai href seulement. Il est identifié à l'aide
//*[@href='value']
mais//*a[@href='value']
ne fonctionne pas