Come trovare la posizione del nodo tag html con Html Agility Pack

c#-3.0 html html-agility-pack

Domanda

Sto cercando di trovare le posizioni di inizio / fine di diversi tag HTML nella mia stringa Html usando Html Agility Pack.

Esempio di stringa 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.

Dopo aver eseguito con successo il codice ho bisogno di ottenere 2 campi con i valori dell'indice di inizio dei tag A come segue:

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

Dove 11 e 125 sono le posizioni dell'indice che segnano l'inizio di un tag e 68 e 175 rappresenta l'ultima posizione dell'indice dello stesso tag.

So che usando il pacchetto di agilità html HtmlNode posso ottenere il valore di LinePosition che mi darà l'indice di inizio e insieme al innerHtml.Lunghezza dell'elemento posso calcolare la posizione dell'indice finale dell'elemento html.

Sono stato in grado di contare gli elementi di un utilizzando:

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

E ora ho bisogno di vederli attraverso tutti e ottenere i valori di LinePosition di ciascuno. Questo è dove mi trovo bloccato.

Risposta popolare

Beh, è ​​stato molto semplice quindi pubblicherò una risposta per me stesso agli altri che hanno lo stesso problema:

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


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché