2009-11-06 11 views
1

Par exemple, si jeComment sélectionner un noeud qui est un nombre inconnu de niveaux de profondeur d'une balise dans XPath?

<form name="blah"> 
    <input name="1"/> 
    <input name="2"/> 
    <table> 
     <tr> 
     <td> 
      <unkown number of levels more> 
      <input name="3"/> 
     </td> 
     </tr> 
    <table> 
</form> 

Comment puis-je mettre en place une requête qui renverra l'entrée 1,2 et 3?

Edit: Je dois souligner que je ne suis pas intéressé à saisir tous les éléments d'entrée sur la page, je veux juste tous les éléments d'entrée qui sont les enfants d'une forme particulière, de sorte que « // » est située juste.

Répondre

7

Utilisez le // pour rechercher quel que soit le niveau. Gardez à l'esprit qu'il s'agit d'une recherche "coûteuse". Ainsi, plus vous pouvez spécifier de contexte, plus XPath peut l'appeler rapidement.

/html/path/to/form//input 

est préférable. Si vous êtes dans le contexte de la forme, encore mieux. Votre requête XPath ressemblerait plus:

form//input 

ou si vous voulez juste des enfants de la forme « bla »:

form[@name='blah']//input 
+0

Ah excellente merci. –

2

Utilisez la double barre oblique, de sorte //input qui sélectionnera tous les éléments d'entrée, quelle que soit la hiérarchie.

Si vous voulez simplement toutes les étiquettes d'entrée dans l'élément de formulaire, utilisez // form/input /form//input.

Editer: Oui, merci pour la correction Kragen.

+0

Ce ne renverra les éléments qui sont des descendants directs de l'élément de forme, de façon à l'exemple ci-dessus 1 et 2, mais pas 3. – Justin