199 votes

XPath avec des conditions multiples

Quel XPath puis-je utiliser pour sélectionner toute catégorie avec un attribut de nom spécifié et tout nœud enfant auteur avec la valeur spécifiée.

J'ai essayé différentes variantes du chemin ci-dessous, sans succès :

//quotes/category[@name='Sport' and author="James Small"]

Le XML :

<?xml version="1.0" encoding="utf-8"?>
<quotes>
  <category name="Sport">
   <author>James Small<quote date="09/02/1985">Quote One</quote><quote             date="11/02/1925">Quote nine</quote></author>
  </category>
   <category name="Music">
   <author>Stephen Swann
 <quote date="04/08/1972">Quote eleven</quote></author>
  </category>
  </quotes>

296voto

Cylian Points 4522

Essayez :
//category[@name='Sport' and ./author/text()='James Small']

41voto

Dimitre Novatchev Points 147842

Utilisez :

/category[@name='Sport' and author/text()[1]='James Small']

ou utiliser :

/category[@name='Sport' and author[starts-with(.,'James Small')]]

C'est une bonne règle que d'essayer d'éviter d'utiliser l'option // pseudo-opérateur chaque fois que possible, car son évaluation peut être très lente.

Aussi :

./somename

est équivalent à :

somename

Il est donc recommandé d'utiliser ce dernier.

18voto

akhter wahab Points 1551

La question n'est pas claire, mais ce que je comprends, c'est que vous devez sélectionner une catégorie qui a un attribut de nom et qui doit avoir un auteur enfant avec une valeur spécifiée, corrigez-moi si je me trompe.

voici un xpath

//category[@name='Required value'][./author[contains(.,'Required value')]]
e.g
//category[@name='Sport'][./author[contains(.,'James Small')]]

3voto

Suman Points 319

Vous pouvez appliquer des conditions multiples dans xpath en utilisant and, ou

//input[@class='_2zrpKA _1dBPDZ' and @type='text']

//input[@class='_2zrpKA _1dBPDZ' or @type='text']

2voto

Avinash Pande Points 751

Ici, nous pouvons faire de cette façon aussi :

//category [@name='category name']/author[contains(text(),'authorname')]

OU

//category [@name='category name']//author[contains(text(),'authorname')]

Pour apprendre XPATH en détail, veuillez visiter- selenium xpath en détail

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