XPath dans VB.NET avec HTML Agility Pack

html-agility-pack vb.net xpath

Question

J'ai le code suivant vb.net qui fonctionne très bien et dans la boîte de message, je vois le nombre exact d'éléments qui ont un attribut id.

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

maintenant, le problème, c’est que lorsque j’utilise ce qui suit dans la boîte de message, cela me donne la référence à un objet non définie sur une instance d’objet bien qu’il y ait 6 éléments avec l’id rso

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[@id]")
 MsgBox(hreftext.Count)

y a-t-il un problème avec le deuxième extrait?

Réponse acceptée

Après avoir lu une autre de vos questions SO, il semble que vous essayez de supprimer Google Shopping et que vous ayez négligé de consulter la source HTML téléchargée, plutôt que le nom de domaine généré.

L'id "rso" n'apparaît pas dans la source HTML, c'est pourquoi vous obtenez l'erreur. Google n'aime pas être éradiqué, et rend certainement la tâche difficile.

Pour voir ce que je veux dire, vous pouvez ajouter une zone de texte multiligne à votre formulaire et ajouter ceci à la place de votre code xpath actuel:

TextBox1.Text = htmldoc.DocumentNode.OuterHtml

Pretty n'est-ce pas !!


Réponse populaire

Pour élaborer sur la vérification du cas:

Essayer:

Dim hreftext = htmldoc.DocumentNode.SelectNodes("//*[translate(@id,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')='rso']")
 MsgBox(hreftext.Count)

Pour saisir un noeud égal à n'importe quelle combinaison de cas de 'rso'




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi