使用HtmlAgilityPack删除具有特定值的属性?

时间:2016-02-29 20:40:28

标签: css html-agility-pack

我试图弄清楚如何从节点中删除特定的样式值。 我使用element.Attributes.Remove(element.Attributes["style"]);删除所有样式,但我只想删除具有特定值的样式。 即。

中删除样式
<tr style='background-color:rgb(255, 255, 153);'>

但不是来自

 <tr style='background-color:rgb(0, 0, 255);'>

我还想在同一个节点上添加一个类。

1 个答案:

答案 0 :(得分:1)

您无法使用xpath在HAP中选择属性,您只能选择其元素,因此最好的方法是实际选择具有所需值的属性的元素,例如跟随xpath将选择具有给定值的style属性的所有元素。

//*[@style='background-color:rgb(255, 255, 153);']

所以要走的路是:

var allElementsWithStyleAttributeValue = html.DocumentNode.SelectNodes("//*[@style='background-color:rgb(255, 255, 153);']");
if(allElementsWithStyleAttributeValue!=null)
 {
    foreach(var el in allElementsWithStyleAttributeValue)
    {
       el.Attributes.Remove("style");
       el.Attributes.Add("class", "youclassvalue");
    }
  }