是否可以删除具有特定类名的整个div?例如;
<body>
<div class="head">...</div>
<div class="container">...</div>
<div class="foot">...</div>
</body>
我想删除带有“容器”类的div。
C#代码示例非常有用,谢谢。
答案 0 :(得分:1)
如果要在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();
答案 1 :(得分:1)
这样做的正确方法(我想)是通过内置的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);
显然,你也可以做循环等。
答案 2 :(得分:0)
好吧,在正则表达式的帮助下,你可以删除你想要的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>