删除具有特定 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);
显然,你也可以做循环等等
是否可以删除具有特定 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);
显然,你也可以做循环等等