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","")