我正在尝试使用HtmlAgilityPack创建一个代码段,以便移除所有带有style属性的标签。
这是我的代码:
var elements = htmlDoc.DocumentNode.SelectNodes("//*");
if (elements!=null)
{
foreach (var element in elements)
{
element.Attributes.Remove("style");
}
}
然而,我不能让它生效。如果我在 Remove("style")
后立即查看 element
对象,我会发现 style 属性已被移除,但它仍然出现在 DocumentNode
对象中。:/
我感觉有点蠢,但这对我来说似乎不太对?有人使用 HtmlAgilityPack 做过类似的事情吗?谢谢!
更新
我将代码更改为以下内容,它可以正常工作:
public static void RemoveStyleAttributes(this HtmlDocument html)
{
var elementsWithStyleAttribute = html.DocumentNode.SelectNodes("//@style");
if (elementsWithStyleAttribute!=null)
{
foreach (var element in elementsWithStyleAttribute)
{
element.Attributes["style"].Remove();
}
}
}
<html style='style1'><body style='style2'></body></html>
,它可以工作。 - Simon Mourier