如何使用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);
}


Related

许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因