用AgilityHTML替换属性?

时间:2012-05-02 06:03:43

标签: c# .net-4.0 html-agility-pack

我需要更改很多页面的CSS,所以我抓住机会玩AgilityHTML,我可以读取我必须改变的css条目,但我不知道如何更改它的href。

这是我想要改变的一个例子:

<link rel="stylesheet" type="text/css" href="http://cdn.mysite.com/master/public.css?rev=012010">

更具体的href:

http://cdn.mysite.com/master/public.css?rev=012010

我环顾四周但尚未找到答案。

var nodes = doc.DocumentNode.SelectNodes("//css[@type=\"text/css\"]");
if (nodes != null)
{
    foreach (HtmlNode data in nodes)
    {
        if (data.Attributes["href"] == null)
            continue;

        //data.Attributes["href"].Value;
    }
}

要恢复:

如何更改href并将其保存回来?

2 个答案:

答案 0 :(得分:1)

data.Attributes["href"].Value = "Whatever you want";
...
...
doc.Save(stream);
// or:
string content = doc.DocumentNode.OuterHtml;

答案 1 :(得分:0)

尝试以下,

var nodes = doc.DocumentNode.SelectNodes("//css[@type='text/css']");

它将正确选择节点。

我猜HtmlNode类上有一个名为

的方法
  

SetAttributeValue

您可以使用它来保存新值。

设置值后,您可以使用

访问已更改的html内容
node.DocumentNode.OuterHtml