C#で使用できるjQueryのようなcssセレクターがあるかどうか疑問に思います。
現在、正規表現を使用していくつかのhtml文字列を解析しており、jQueryにcssセレクターのようなものを使用して目的の要素に一致させる方がはるかに良いと思いました。
C#で使用できるjQueryのようなcssセレクターがあるかどうか疑問に思います。
現在、正規表現を使用していくつかのhtml文字列を解析しており、jQueryにcssセレクターのようなものを使用して目的の要素に一致させる方がはるかに良いと思いました。
2012年10月18日更新
CsQueryはリリース1.3になりました。最新のリリースには、validator.nu HTML5パーサーのC#ポートが組み込まれています。その結果、CsQueryは、無効なマークアップ処理にHTML5仕様を使用し、完全に標準に準拠したDOMを生成するようになりました。
元の回答
古い質問ですが、新しい答えです。最近、C#で記述された.NET 4用のjQueryポートであるCsQueryのバージョン1.1をリリースしました。これは、約1年間取り組んできました。NuGetでも「CsQuery」として
現在のリリースでは、すべてのCSS2およびCSS3セレクター、すべてのjQuery拡張機能、およびすべてのjQueryDOM操作メソッドが実装されています。jQueryとsizzle(jQuery CSS選択エンジン)からのすべてのテストを含む広範なテストカバレッジがあります。Fizzlerと直接比較するためのパフォーマンステストもいくつか含めました。ほとんどの場合、CsQueryはそれを劇的に上回っています。例外は、実際にはFizzlerの方が高速な最初の場所でHTMLをロードすることです。これは、fizzlerがインデックスを作成しないためだと思います。ただし、最初の選択後にその時間を取り戻すことができます。
githubサイトにドキュメントがありますが、基本的なレベルでは次のように機能します。
HTMLの文字列から作成する
CQ dom = CQ.Create(htmlString);
Webから同期的にロード
CQ dom = CQ.CreateFromUrl("http://www.jquery.com");
非同期でロード(ノンブロッキング)
CQ.CreateFromUrlAsync("http://www.jquery.com", responseSuccess => {
Dom = response.Dom;
}, responseFail => {
..
});
セレクターを実行し、jQueryを実行します
var childSpans = dom["div > span"];
childSpans.AddClass("myclass");
CQ
オブジェクトはjQueryオブジェクトに似ています。上記で使用されているプロパティインデクサーは、デフォルトのメソッドです(のように$(...)
。
出力:
string html = dom.Render();
@jamietre のCsQueryが必ず表示されます。この質問に対する彼の答えをチェックしてください!
FizzlerとSharp-Queryは同様の機能を提供しますが、プロジェクトは放棄されたようです。
jQueryとは異なりますが、これが役立つ場合があります:http: //www.codeplex.com/htmlagilitypack
XMLの場合、XPathを使用できます...
何を達成しようとしているのか完全にはわかりませんが、データを抽出しようとしているHTMLドキュメントがある場合は、パーサーを使用してロードすることをお勧めします。そうすれば、かなり簡単になります。オブジェクトをクエリして、目的の要素をプルします。
上でリンクしたパーサーでは、XPathクエリを使用できます。これは、探しているもののように聞こえます。
誤解した場合はお知らせください。