Comment trouver la position du noeud de balise html avec Html Agility Pack

c#-3.0 html html-agility-pack

Question

J'essaie de trouver les positions de début et de fin de différentes balises HTML dans ma chaîne HTML à l'aide de Html Agility Pack.

Exemple de chaîne html:

This is a <a href="https://en.wikipedia.org/wiki/Health">custom</a> made html string that will serve as an example for the <a href="http://stackoverflow.com">StackOverflow</a> question described above.

Après avoir exécuté avec succès le code que je dois obtenir 2 tableaux avec des valeurs de l'indice de début des balises a comme suit:

int[] startIndex = new int[] { 11, 124 };
int[] endIndex = new int[] { 68, 176 };

Où 11 et 125 sont les positions d'index qui marquent le début de la balise et 68 et 175 représente la dernière position d'index de la même étiquette.

Je sais qu'en utilisant le pack d'agilité html HtmlNode, je peux obtenir la valeur LinePosition qui me donnera l'index de départ et, avec l'innerHtml.Lenght, je peux calculer la position de l'index de fin de l'élément html.

J'ai pu compter les éléments en utilisant un:

int aNodesCount =  htmlDoc.DocumentNode.SelectNodes("//a").Count;

Et maintenant, je dois les parcourir tous et obtenir les valeurs LinePosition de chacun. C'est là que je me trouve coincé.

Réponse populaire

Eh bien, c'était assez simple, alors je vais répondre moi-même aux autres problèmes similaires:

foreach (HtmlNode aNode in htmlDoc.DocumentNode.SelectNodes("//a"))
{
    startIndex.Add(aNode.LinePosition);
    endIndex.Add(aNode.LinePosition + aNode.OuterHtml.Length);
}


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