2012-07-14 96 views
1

我在c#中使用HtmlAgilityPack。我創建了一些屬性,像一個div元素,單獨訪問樣式屬性

HtmlNode div = HtmlNode.CreateNode("<div></div>"); 
div.Attributes.Add("style","width:100px;height:100px;color:red;position:absolute;"); 

現在我想知道,有沒有用,我可以訪問風格HtmlAgilityPack任何方法屬性分別,就像我們做的jQuery:

  $("div").width(); or $("div").css("width"); 
+0

Short anser:no。您可以使用GetAttributeValue來拉取樣式,但您必須自己解析各個屬性。 – 2012-07-14 18:25:05

回答

1

你可以嘗試使用CsQuery,這實際上是像jQuery:

CQ div = CQ.Create("<div></div>"); 

div.CssSet(new { 
    width="100px", 
    height="100px", 
    color="red", 
    position="absolute" 
}); 

//.. or 

div.Css("width","100px").Css(...) ... 

string width = div.Css("width");  // width=="100px" 

int widthInt = div.Css<int>("width"); // widthInt==100 

它實現的jQuery的每一個DOM操作方法,因此API應該是非常福美來河它還提供了大部分模仿瀏覽器DOM的實現,例如

var nodeName = div[0].NodeName;   // nodeName=="DIV"; 

div[0].AppendChild(div.Document.CeateElement("span")); // add a span child 

有幾個例外,CssSet就是其中之一,在JavaScript中的重載方法並沒有在C#中摸出所以不得不使用不同的方法。 (從對象設置時另一個是AttrSet)。它也得到了廣泛的單元測試覆蓋,其中包括從jQuery移植到C#的大部分測試套件,並且選擇器比HTML Agility Pack快得多(更不用說,因爲它們只是CSS,所以更容易混淆)指數。