2

Dot Netの世界にjQueryのようなhtml要素セレクターライブラリはありますか?大量のHTML解析を伴うアプリケーションを構築しています。

「post_message_%」のようなIDを持つ選択された「div」内のすべての「href」と「src」を列挙したいとします。または、特定のIDまたは入力タイプ(非表示またはラジオなど)を持つフォーム内の名前と値の文字列を選択したいとします

コードを書くことはできますが、最初に既存のソリューションを探して、それを使用して他のことに時間を節約できるようにします。

4

2 に答える 2

6

ゲームに少し遅れていますが、別の方法があります。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ます。

于 2012-09-13T20:33:22.663 に答える
5

こちらから入手できるHtmlAgilityパックを確認する必要があります。XPATHセレクターを使用する彼らのWebサイトのユースケースは次のとおりです。

HtmlDocument doc = new HtmlDocument();
doc.Load("file.htm");
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
{
   HtmlAttribute att = link["href"];
   att.Value = FixLink(att);
}
doc.Save("file.htm");
于 2012-05-05T13:46:43.690 に答える