【问题标题】:HtmlAgilityPack: Remove tags, Replace with whitespaceHtmlAgilityPack:删除标签,替换为空格
【发布时间】:2012-11-12 16:01:57
【问题描述】:
string url = "http://www.myurl.xxx";
HtmlWeb webGet = new HtmlWeb();
HtmlDocument doc =  webGet.Load(url);

foreach(var script in doc.DocumentNode.Descendants("script").ToArray())
   script.Remove();


foreach(var style in doc.DocumentNode.Descendants("style").ToArray())
   style.Remove();

 string mtext =  doc.DocumentNode.InnerText;

字符串 mtext 在已删除标签的文本之间没有间距,我如何“删除”并将已删除的标签替换为换行符或所有标签实例的“”?

【问题讨论】:

    标签: c# html-agility-pack


    【解决方案1】:

    您只是在删除节点。取而代之的是,您应该用新节点替换这些节点。这将用空格符号替换您的 <script><style> 节点:

    foreach (var node in doc.DocumentNode.SelectNodes("//script|//style").ToArray())
    {
        var replacement = doc.CreateTextNode(" ");
        node.ParentNode.ReplaceChild(replacement, node);
    }
    

    【讨论】: