То, что вы хотите, это замена. К счастью, такой API существует, который вы уже используете (Replace
). Тем не менее, большая часть вашего стандартного кода также может быть заменена стандартными API (такими как QuerySelectorAll
):
var config = Configuration.Default.WithDefaultLoader().WithCss();
var parser = new HtmlParser(config);
var document = parser.Parse("<p><span><span><em>span text</em></span> </span> span text</p>");
foreach (var element in document.QuerySelectorAll("span").Where(m => m.Attributes.Length == 0))
{
element.Replace(element.ChildNodes.ToArray());
}
document.Body.InnerHtml.Dump();
Примечание. Я поместил Where
только для того же условия, что и в коде, а именно: для этих элементов span
атрибут не должен быть найден.
Надеюсь, это поможет!