删除具有特定 class 名称的整个 div

Remove whole div with specific class name

是否可以删除具有特定 class 名称的整个 div?例如;

<body>
<div class="head">...</div>
<div class="container">...</div>
<div class="foot">...</div>
</body>

我想删除 div 和 "container" class。

一个 C# 代码示例会非常有用,谢谢。

如果你想在 c# 中解析 html,最好的方法是使用 Html 敏捷包:

https://htmlagilitypack.codeplex.com/

HtmlDocument document = new HtmlDocument();  
document.Load(@"C:\yourfile.html")  

HtmlNode nodesToRemove= document .DocumentNode.SelectNodes("//div[@class='container']").ToList();  

foreach (var node in nodesToRemove)
    node.Remove();

嗯,借助正则表达式,您可以删除所需的 div

var data = "<body>\n<div class=\"head\">...</div>\n" +
    "<div class=\"container\">...</div>\n" +
    "<div class=\"foot\">...</div>\n</body>";

var rxStr = "<div[^<]+class=([\"'])container\1.*</div>";

var rx = new System.Text.RegularExpressions.Regex (rxStr, 
    System.Text.RegularExpressions.RegexOptions.IgnoreCase);


var nStr = rx.Replace (data, "");

Console.WriteLine (nStr);

这会将您的字符串缩减为

<body>
<div class="head">...</div>

<div class="foot">...</div>
</body>

正确的方法(我想)是通过内置的 Gecko DOM 类 和方法。

所以,在你的情况下是这样的:

var containers = yourDocument.GetElementsByClassName("container");
//this returns an IEnumerable of elements with this class. If you only ever gonna have one, you can do it like that:
var yourContainer = containers.FirstOrDefault();
yourContainer.Parent.RemoveChild(yourContainer);

显然,你也可以做循环等等