Cómo encontrar la posición del nodo de la etiqueta html con Html Agility Pack

c#-3.0 html html-agility-pack

Pregunta

Estoy tratando de encontrar las posiciones de inicio / fin de diferentes etiquetas Html dentro de mi cadena Html usando Html Agility Pack.

Ejemplo de cadena 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.

Después de ejecutar correctamente el código que necesito para obtener 2 matrices con los valores del índice de inicio de las etiquetas a los siguientes:

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

Donde 11 y 125 son las posiciones de índice que marcan el comienzo de una etiqueta y 68 y 175 representan la última posición de índice de la misma etiqueta.

Sé que utilizando el paquete de agilidad html HtmlNode puedo obtener el valor de LinePosition que me dará el índice de inicio y, junto con el innerHtml.Lenght del elemento, puedo calcular la posición del índice final del elemento html.

Yo era capaz de contar los elementos de un utilizando:

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

Y ahora necesito iterar a través de todos ellos y obtener los valores de LinePosition de cada uno. Aquí es donde me encuentro atrapado.

Respuesta popular

Bueno, eso fue bastante simple, así que publicaré una respuesta para mí de otros que tienen el mismo problema:

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


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué