如果类值为"Section2 RenderAsSection2"
这是输入
<body>
<div id="Sec3" class="Section2 RenderAsSection2">
<h3 class="Heading"><span class="HeadingNumber">1.1.2 </span>Text1</h3>
<div class="Para ParaOneEmphasisChild">Text 2 <span class="EmphasisTypeItalic">decay</span>. Text3</div><div class="Para">Text4 <span class="EmphasisTypeItalic">decay</span> processes.</div>
</div>
</body>
这应该是输出
<body>
<h3 class="Heading"><span class="HeadingNumber">1.1.2 </span>Text1</h3>
<div class="Para ParaOneEmphasisChild">Text 2 <span class="EmphasisTypeItalic">decay</span>. Text3</div><div class="Para">Text4 <span class="EmphasisTypeItalic">decay</span> processes.</div>
</body>
这是我的代码
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(@"1.html");
var en = doc.DocumentNode.Descendants("div");
var ll = en.ToList();
foreach (var item in ll)
{
foreach (var att in item.Attributes)
{
if (att.Value == "Section2 RenderAsSection2")
{
item.ParentNode.RemoveChild(item, true);
}
}
}
但输出是
<body>
<div class="Para">Text4 <span class="EmphasisTypeItalic">decay</span> processes.</div><div class="Para ParaOneEmphasisChild">Text 2 <span class="EmphasisTypeItalic">decay</span>. Text3</div>
<h3 class="Heading"><span class="HeadingNumber">1.1.2 </span>Text1</h3>
</body>
它是如何变成那样的?
谢谢。
答案 0 :(得分:0)
基于this answer,您可以按如下方式简化代码:
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(@"1.html");
var en = doc.DocumentNode.Descendants( "div" ).Where( d => d.Attributes.Contains("class") && d.Attributes["class"].Value == "Section2 RenderAsSection2");
<强> EDITED 强>:
foreach (var item in en)
{
foreach (HtmlNode child in item.ChildNodes)
{
item.ParentNode.InsertBefore(child, item);
}
item.Remove();
}