Comment puis-je trouver l’URL du lien par texte de lien avec XPath?

J’ai une page XHTML bien formée. Je veux trouver l’URL de destination d’un lien lorsque j’ai le texte lié.

Exemple

programming questions site news 

Je veux une expression XPath telle que si le programming questions site donné programming questions site il donnera http://stackoverflow.com et si je lui donne des news il donnera http://cnn.com .

Devrait être quelque chose de similaire à:

 // a [text () = 'text_i_want_to_find'] / @ href

Trop tard pour vous, mais pour quelqu’un d’autre avec la même question …

 //a[contains(text(), 'programming')]/@href 

Bien sûr, la «programmation» peut être n’importe quel fragment de texte.

 //a[text()='programming quesions site']/@href 

qui identifie fondamentalement un nœud d’ancrage qui contient le texte que vous voulez et extrait l’atsortingbut href .

Considérez la phrase entre crochets comme une clause WHERE dans SQL.

Donc, cette requête dit, “sélectionnez l’atsortingbut” href “(@) d’une balise” a “qui apparaît n’importe où (//), mais uniquement lorsque (la phrase entre parenthèses) le contenu textuel de la balise” a “est égal à” questions de programmation site ‘”.

Pour les fichiers insensibles à la casse, utilisez ce qui suit:

 //a[contains(translate(text(),'PROGRAMMING','programming'), 'programming')]/@href 

translate convertit les majuscules dans la programmation en minuscules.

Si vous utilisez un pack d’agilité HTML, utilisez getatsortingbuteValue:

 $doc2.DocumentNode.SelectNodes("//div[@class='className']/div[@class='InternalClass']/a[@class='InternalClass']").GetAtsortingbuteValue("href","")