Il existe un fichier HTML (dont je ne contrôle pas le contenu) qui a plusieurs éléments input
tous avec le même attribut id
fixe de "search_query"
. Le contenu du fichier peut changer, mais je sais que je veux toujours obtenir le deuxième élément input
avec l'attribut id "search_query"
.Requête XPath pour obtenir la nième instance d'un élément
J'ai besoin d'une expression XPath pour cela. J'ai essayé //input[@id="search_query"][2]
mais cela ne fonctionne pas. Voici une chaîne XML exemple où cette requête a échoué:
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
<div>
<form>
<input id="search_query" />
</form>
</div>
Gardez à l'esprit que ce qui précède est simplement un exemple et l'autre code HTML peut être tout à fait différent et les input
éléments peuvent apparaître n'importe où sans structure du document uniforme (sauf que je suis garanti qu'il y aura toujours au moins deux éléments input
avec un attribut id de "search_query"
).
Quelle est l'expression XPath correcte?
Bonne question, +1. Voir ma réponse pour une explication complète du problème et pour la solution recherchée. –
Point secondaire: vous ne devriez jamais avoir plus d'un élément avec un ID donné (et ainsi le HTML dans la question est réellement invalide). En pratique, les navigateurs vous permettent de le faire de toute façon, mais si vous le faites, vous ne profitez pas du seul avantage de l'utilisation des ID, à savoir qu'ils signalent «Je suis unique» (alors que les classes sont conçues pour être utilisées signifiants uniques). – machineghost