c#
  • html
  • html-agility-pack
  • 2015-06-19 135 views 1 likes 
    1

    我想从我的htmlNode删除所有的HTML注释标记,下列标记是从我的C#的HtmlNode选择代码如何替换HTML注释<! - 注释 - >用的String.Empty

    HtmlNode table = doc5.DocumentNode.SelectSingleNode("//div[@id='div12']"); 
    

    回以下

    <table> 
        <tr> 
        <td>test</td> 
        <td> 
         <!-- <a href='url removed' >Test link Test 2 Comment </a> --> 
        </td> 
        </tr> 
    </table>​ 
    

    我设法配置的正则表达式来解决我的问题HtmlNode伪标记代码,C#代码如下。但是,只有在我的测试运行中,它才能成功运行,输入类型为字符串。请参阅下面的C#代码。

    string rkr; 
    rkr = "<!-- <a href='url removed' >Test link Test 2 Comment </a> -->"; 
    rkr = Regex.Replace(rkr, @"(\<!--\s*.*?((--\>)|$))",String.Empty); 
    

    Result =“”。这是我想要的所有标签的实时运行。

    我在论坛和stackoverflow论坛上看到了很多代码示例。但没有什么是接近我想要的。一篇文章非常有用,但它是用于PHP的 - 所以再次没用。现在

    ,如果在上述Regex.Replace功能我进入

    rkr = Regex.Replace(table, @"(\<!--\s*.*?((--\>)|$))",String.Empty); 
    

    我收到以下错误

    的最佳重载的方法匹配 “System.Text.RegularExpressions.Regex.Replace (字符串, System.Text.RegularExpressions.MatchEvaluator,int)'有一些无效 论据

    我也试图

    rkr = Regex.Replace(table.ToString(), @"(\<!--\s*.*?((--\>)|$))",String.Empty); 
    

    转换,但后来我得到RKR = “HtmlAgilityPack.HtmlNode” 返回值。

    任何帮助将是很大的帮助。

    回答

    0

    谢谢大家的帮助。我发现以下功能的解决方案。

    填充doc5如下

    HtmlNode table = doc5.DocumentNode.SelectSingleNode("//div[@id='div12']"); 
    
    RemoveComments(table); 
    
    public static void RemoveComments(HtmlNode node) 
    { 
        foreach (var n in node.ChildNodes.ToArray()) 
         RemoveComments(n); 
        if (node.NodeType == HtmlNodeType.Comment) 
         node.Remove(); 
    } 
    

    仅供参考刚过调用的函数:我发现在以下职位的答案。 How to select node types which are HtmlNodeType Comment using HTMLAgilityPack

    非常精确,并有很多不同的示例类型,正是我以前的样子。

    0

    回答here

    doc5.DocumentNode.Descendants() 
        .Where(n => n.NodeType == HtmlAgilityPack.HtmlNodeType.Comment) 
        .ToList() 
        .ForEach(n => n.Remove()); 
    

    注:ToList是必要的,因为你不能改变你列举的顺序。

    +0

    你的意思是我使用了上面的建议答案,符合我的代码HtmlNode table = doc5.DocumentNode.SelectSingleNode(“// div [@ id ='div12']”); – Jag

    相关问题