来自HTML Agility Pack中的行/位置编号的HTMLNode

时间:2012-06-11 03:51:07

标签: c# winforms html-agility-pack

我试图找到给定行/字符位置的相应HtmlNode(例如,第5行,字符12)。我查看了帮助文档,但我不太确定它是否可用。

这可以在Html Agility Pack中做到吗?

编辑:

示例HTML文件:

<!DOCTYPE html>
<html>
<body>

<h4>An Ordered List:</h4>
<ol>
  <li>Coffee</li>
  <li>Tea</li>
  <li>Milk</li>
</ol>

</body>
</html>

我试图获得位置第7行,第5个字符 - &gt;咖啡李和第12行,回到节点。

1 个答案:

答案 0 :(得分:5)

如果您在第5行第12位讨论HTML,您可以执行以下操作:

private void button1_Click_1(object sender, EventArgs e)
{
    HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc;
    doc =  web.Load("http://slashdot.org");


    var node = CheckLine(doc.DocumentNode);
    if (node != null)
        MessageBox.Show(node.OuterHtml);
}

private HtmlAgilityPack.HtmlNode CheckLine(HtmlAgilityPack.HtmlNode node)
{
    if (node.Line == 5 && node.LinePosition < 12 && ((node.LinePosition + node.OuterHtml.Length) > 12))
        return node;

    foreach (var n in node.ChildNodes)
    {
        var val = CheckLine(n);
        if (val != null)
            return val;
    }
    return null;
}