Как найти позицию узла html-тега с помощью Html Agility Pack

c#-3.0 html html-agility-pack

Вопрос

Я пытаюсь найти начальную / конечную позиции различных тегов Html внутри моей строки HTML, используя Html Agility Pack.

Пример строки 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.

После успешного выполнения кода мне нужно получить 2 массива со значениями из индекса начала тегов a следующим образом:

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

Где 11 и 125 являются позициями индекса, которые отмечают начало тега a, а 68 и 175 представляют собой последнюю позицию индекса одного и того же тега.

Я знаю, что с помощью html agility pack HtmlNode я могу получить значение LinePosition , которое даст мне начальный индекс и вместе с innerHtml.Lenght элемента, который я могу рассчитать конечную позицию индекса элемента html.

Я был в состоянии рассчитывать на элементы с помощью:

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

И теперь мне нужно это сделать через все из них и получить значения LinePosition для каждого из них. Вот где я застрял.

Популярные ответы

Ну, это было довольно просто, поэтому я отправлю ответ для себя другим, получающим ту же проблему:

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


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему