374 votes

Comment sélectionner le premier élément avec un attribut spécifique en utilisant XPath

Le XPath bookstore/book[1] sélectionne le premier nœud de livre sous bookstore .

Comment puis-je sélectionner le premier nœud qui correspond à une condition plus compliquée, par exemple le premier nœud qui correspond à la condition suivante /bookstore/book[@location='US']

5voto

Utilisez l'index pour obtenir le noeud désiré si le xpath est compliqué ou si plus d'un noeud est présent avec le même xpath.

Ex :

(//bookstore[@location = 'US'])[index]

Vous pouvez donner le numéro du nœud que vous voulez.

2voto

Ed Bangga Points 11169

Si l'espace de nom est fourni sur le xml donné, il est préférable de l'utiliser.

(/*[local-name() ='bookstore']/*[local-name()='book'][@location='US'])[1]

0voto

SenthilKumarP Points 61

Par exemple.

<input b="demo">

Et

(input[@b='demo'])[1]

-1voto

user659077 Points 46

Avec l'aide d'un site web testeur xpath J'écris cette réponse...
Pour ça :

<table id="t2"><tbody>
<tr><td>123</td><td>other</td></tr>
<tr><td>foo</td><td>columns</td></tr>
<tr><td>bar</td><td>are</td></tr>
<tr><td>xyz</td><td>ignored</td></tr>
</tbody></table>

le xpath suivant :

id("t2") / tbody / tr / td[1]

sorties :

123
foo
bar
xyz

Depuis 1 signifie sélectionner tout td qui sont le premier enfant de leur propre parent direct.
Mais le xpath suivant :

(id("t2") / tbody / tr / td)[1]

sorties :

123

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X