如何使用Html Agility Pack查找html標記節點位置

c#-3.0 html html-agility-pack

我試圖通過使用Html Agility Pack在我的Html字符串中找到不同Html標籤的開始/結束位置。

示例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.

成功運行代碼後,我需要從a標籤的起始索引獲取2個數組,如下所示:

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

其中11和125是標記a標籤開始的索引位置,68和175表示同一標籤的最後一個索引位置。

我知道使用html敏捷包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);
}


許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因