ゲームに少し遅れていますが、別の方法があります。CsQueryは、.NET4のjQueryの完全な移植版です。NuGetにありCsQuery
ます。すべてのCSS3セレクターとDOM操作メソッドを含め、安定していて機能が充実しています。また、完全にインデックス化されているため、セレクターはHTMLAgilityPackよりも桁違いに高速になります。
構文は次のようになります(上記のコピー例)
CQ doc = CQ.CreateFromFile("file.htm");
foreach (IDomObject link in doc["a"]) {
var attr = link["href"];
link["href"] = FixLink(attr);
}
オブジェクトのプロパティインデクサー構文はCQ
、セレクターを実行するためのデフォルトのjQueryメソッドと同じです$('a')
。DomObject
(要素)では、属性値を返します。
CSSセレクターに加えて、CsQueryはすべてのjQueryメソッドも実装しているため、次のように実行できます。
doc.Each((i,e)=> {
var el = CQ.Create(e); // or shorthand: var el = e.Cq()
el.Attr("href",FixLink(el.Attr("href"))
});
構文e.Cq()
は、のようなjQueryオブジェクトで要素をラップするC#バージョンですvar el = $(e)
。$構文の値は簡潔であり、C#でデフォルトの静的メソッドを作成する方法がないため、要素のメソッドCq()
は、オブジェクトで要素をラップするための省略形として提供されCQ
ます。