Obtenir le deuxième noeud avec la même classe

c# html-agility-pack

Question

J'ai de la difficulté à analyser certains nœuds avec HtmlAgilityPack.

Voici le problème:

J'ai beaucoup de noeuds avec la classe "test", mais je veux choisir le second.

Si je fais quelque chose comme ça:

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=1]")

Il retourne la valeur que j'attendais ... mais si j'essaie d'obtenir la seconde, il renvoie null ... mais la question est .. pourquoi?

html.DocumentNode.SelectSingleNode ("//font[@class='test' and position()=2]")

Cette ligne de code m'amène tous, et je suis vraiment dérouté maintenant, car en utilisant position () = 1, la bibliothèque n'a dû renvoyer que le premier, non?

html.DocumentNode.SelectNodes ("//font[@class='test' and position()=1]")

Merci les gars!

Réponse acceptée

Le bon code serait

html.DocumentNode.SelectSingleNode ("(//font[@class='test'])[2]")

Le code que vous avez utilisé sélectionne le premier ou le deuxième élément de test dans l'élément parent, et non le premier ou le deuxième élément de la séquence de tous font éléments de font de la classe test .




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