从InnerText中删除注释行

时间:2012-02-02 02:06:25

标签: c# html-agility-pack

我目前正在使用下面提取InnerText的代码,然而,发生的事情是我遇到了一堆注释掉的html <--行如何使用下面的代码删除它们? / p>

HtmlWeb hwObject = new HtmlWeb();
HtmlAgilityPack.HtmlDocument htmldocObject = hwObject.Load(htmlURL);

foreach (var script in htmldocObject.DocumentNode.Descendants("script").ToArray())
    script.Remove();
HtmlNode body = htmldocObject.DocumentNode.SelectSingleNode("//body");
resultingHTML = body.InnerText.ToString();

2 个答案:

答案 0 :(得分:3)

只需按注释节点过滤节点,然后在其上调用remove。

var rootNode = doc.DocumentNode;
var query = rootNode.Descendants().OfType<HtmlCommentNode>().ToList();
foreach (var comment in query)
{
    comment.Remove();
}

答案 1 :(得分:2)

This可能是一个更好的答案:

public static void RemoveComments(HtmlNode node)
{
    foreach (var n in node.ChildNodes.ToArray())
        RemoveComments(n);
    if (node.NodeType == HtmlNodeType.Comment)
        node.Remove();
}