2010-11-10 27 views
1

Salut comment puis-je sélectionner tous les liens quand ils ont l'ID suivant.Xpath pour la sélection de l'ID html, y compris le nombre aléatoire

<a id="List_ctl01_link3" class="content" href=link1.aspx"> 
<a id="List_ctl02_link3" class="content" href=link2.aspx"> 
<a id="List_ctl03_link3" class="content" href=link3.aspx"> 
<a id="List_ctl04_link3" class="content" href=link4.aspx"> 

Et ainsi de suite ...

S'il vous plaît noter que la dernière partie « link3 » est important et doit être inclus dans le XPath. J'utilise Pack d'agilité C# et Html.

+0

Bonne question, +1. Voir ma réponse pour la solution la plus précise jusqu'à présent. :) –

Répondre

2

Si vous utilisez xpath 2.0, vous pouvez essayer les fonctions match/matches et utiliser des expressions régulières. Si vous utilisez xpath 1.0, vous devrez probablement écrire votre analyseur d'attribut personnalisé (regardez la fonction xsl: function). AFAIR la fonction match n'est disponible que xpath 2.0.

Probablement @id [starts-with (., 'List_ct') et se termine par (., 'Link3')] est une autre façon de le faire.

+0

Thx, j'ai utilisé la solution starts-with et cela fonctionne parfaitement :-) – gulbaek

+0

Notez qu'il n'y a pas de 'fn: ends-with()' dans XPath 1.0 –

+0

@Alejandro, merci. J'ai supposé que s'il y a fn: starts-with() dans xpath 1.0, il devrait y avoir fn: ends-with() pour des raisons de cohérence. Moi mauvais. J'ai dû vérifier ça. –

5

Salut comment pourrais-je sélectionner tout lien quand ils ont l'ID suivant:

Utilisez cette expression XPath:

//a[@id[starts-with(.,'List_ctl')][substring(.,string-length()-5)='_link3']] 

Remarque: Il n'y a pas fn:ends-with() dans XPath 1,0 Utilisez le dernier prédicat à la place.

+0

+1 pour la meilleure solution. –

3

Utilisation:

//a[@id[starts-with(.,'List_ctl') 
     and 
     substring(.,string-length()-5)='_link3' 
     and 
     floor(substring-before(substring_after(.,'List_ctl'),'_')) 
     = 
     floor(substring-before(substring_after(.,'List_ctl'),'_')) 
     ] 
    ] 

Cette expression XPath sélectionne tous a éléments dans le document dont id attribut a une valeur de chaîne avec toutes les propriétés suivantes:

  1. commence par la chaîne 'List_ctl'.

  2. Se termine par la chaîne '_link3'. La sous-chaîne entourée par 'List_ctl' et '_' est une représentation d'un nombre entier.

+0

+1 pour le plus précis :-) –

+0

Ja! +1 Pour la précision! –