So finden Sie die HTML-Tag-Knotenposition mit Html Agility Pack

c#-3.0 html html-agility-pack

Frage

Ich versuche, die Anfangs- / Endpositionen der verschiedenen HTML-Tags innerhalb meiner HTML-Zeichenfolge mit Html Agility Pack zu finden.

Beispiel-HTML-String:

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.

Nachdem ich den Code erfolgreich ausgeführt habe, muss ich 2 Arrays mit Werten aus dem Startindex der a- Tags wie folgt erhalten:

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

Wobei 11 und 125 die Indexpositionen sind, die den Beginn der a- Markierung markieren, und 68 und 175 die letzte Indexposition der gleichen Markierung darstellen.

Ich weiß, dass ich mit dem HTML-Agility-Pack HtmlNode den LinePosition- Wert bekommen kann, der mir den Startindex geben wird und zusammen mit der InnerHtml.Length des Elements kann ich die Endindexposition des HTML-Elements berechnen.

Ich konnte die a- Elemente zählen mit:

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

Und jetzt muss ich durch alle von ihnen iteereate und die LinePosition Werte von jedem bekommen. Hier bin ich festgefahren.

Beliebte Antwort

Nun, das war ziemlich einfach, also werde ich eine Antwort für mich selbst schreiben, dass andere das gleiche Problem bekommen:

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



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum