单独访问样式属性

时间:2012-07-14 08:43:48

标签: c# html-agility-pack

我在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");

1 个答案:

答案 0 :(得分: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而不那么令人困惑),这要归功于具有subselect功能的索引。