【发布时间】:2011-08-16 13:57:50
【问题描述】:
我正在尝试创建一个代码 sn-p 以删除所有 style 属性,而不管使用 HtmlAgilityPack 的标签。
这是我的代码:
var elements = htmlDoc.DocumentNode.SelectNodes("//*");
if (elements!=null)
{
foreach (var element in elements)
{
element.Attributes.Remove("style");
}
}
但是,我没有让它坚持下去?如果我在Remove("style") 之后立即查看element 对象。我可以看到样式属性已被删除,但它仍然出现在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
<html style='style1'><body style='style2'></body></html>并且它有效 -
你使用 InnerHtml 属性吗?在撰写本文时,它有一个错误,请改用 WriteContentTo 方法。
标签: html html-parsing html-agility-pack