Quelle est L'expression XPath pour ne trouver que la première occurrence?

j'ai utilisé cette expression Xpath "//span[@class='Big']" et a obtenu tous les éléments de la page qui sont sous <span> et la balise de class='Big'.

ma question Est ce que si je veux juste la première occurrence sur la page, Pas toutes les occurrences, ce qui serait le correct Xpath expression?

Merci, Narin

36
demandé sur laxonline 2013-01-12 19:52:38

2 réponses

La réponse correcte (notez les parenthèses):

(//span[@class='Big'])[1]

L'expression suivante est fausse dans le cas général:

//span[@class='Big'][1]

parce qu'il sélectionne chaque span élément dans le document, qui répond à la condition dans le premier prédicat, et qui est le premier enfant de son parent -- il peut y avoir beaucoup de tels éléments dans un document XML et tous seront sélectionnés.

Pour plus de détails voir l'explication: https://stackoverflow.com/a/5818966/36305

99
répondu Dimitre Novatchev 2017-05-23 12:10:01

la réponse de Dimitre Novatchev est correcte Si vous attendez le class l'attribut égalBig (sans les autres classes rattachée à l'élément):

(//span[@class='Big'])[1]

... qui est similaire à L'expression JavaScript suivante:

document.querySelectorAll( "span[class='Big']" )[0]

par contre, si vous attendez Bigd'un des classes dans le class attribut (plutôt que la seule classe), vous pouvez utiliser l'expression suivante:

(//span[contains(concat(" ", normalize-space(@class), " "), " Big ")])[1]

... qui est similaire à L'expression JavaScript suivante:

document.querySelectorAll( "span.Big" )[0]
1
répondu Grant Miller 2018-04-13 17:45:41