2012-05-02 102 views
1

我需要改變許多頁面的CSS,所以我趁機玩AgilityHTML,我可以讀取我必須改變的CSS條目,但我不知道如何改變它的href。用AgilityHTML替換屬性?

這裏是什麼,我想改變一個例子:

<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和救回來?

回答

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

謝謝,保存文件正常工作,但它似乎並沒有更新字符串,我正在閱讀HTML內容的任何想法? 'doc.LoadHtml(content);'內容是一個帶有一些html的字符串。 – Prix

+0

字符串在.NET中是不可變的。所以你必須返回新的字符串或通過ref傳遞字符串。 – jessehouwing

0

嘗試以下,

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

它將正確選擇的節點。

我想有上HtmlNode類的方法稱爲

SetAttributeValue

你可以用它來保存新值。

一旦你設置的值,你可以使用

node.DocumentNode.OuterHtml 
+0

節點已經被正確地選擇訪問已更改HTML內容,但THX。 – Prix