Anglesharpは、HTML、SVG、MathMLなどの角度ブラケットベースのハイパーテキストを解析する機能を提供する.NETライブラリです。検証のないXMLは、ライブラリによってもサポートされています。 Anglesharpの重要な側面は、CSSも解析できることです。付属のパーサーは、公式のW3C仕様に基づいて構築されます。これにより、指定されたソースコードの完全にポータブルなHTML5 DOM表現が生成され、常緑ブラウザーの結果との互換性が保証されます。また、ツリートラバーサルのquerySelectorやquerySelectorAll作業などの標準的なDOM機能もあります。
Anglesharp 0.9からAnglesharp 0.10以降に移動する(1.0を含む)?移行文書を見てください。 ⚡⚡
BrowsingContextブラウザタブのようなものです - .netからそれを制御してください!)。 htmlagilityPackのような同様のライブラリよりも利点は、露出したDOMが公式のW3C指定APIを使用していることです。つまり、 querySelectorAllのようなものでさえAnglesharpで利用可能であることです。また、パーサーはHTML 5.1仕様を使用します。これは、エラー処理と要素の修正を定義します。 Anglesharp Libraryは、標準のコンプライアンス、インタラクティブ性、および拡張性に焦点を当てています。したがって、最新のブラウザでDOMを使用することから知っているように、C#と協力してすべての可能性を扱うWeb開発者に提供されています。
Anglesharpのパフォーマンスは、ブラウザのパフォーマンスに非常に近いものです。非常に大きなページでも、ミリ秒以内に処理できます。 Anglesharpは、メモリの割り当てを最小限に抑えようとし、要素を内部的に再利用して、不必要なオブジェクトの作成を避けます。
簡単な例では、データ検索のためにWikipediaのWebサイトを使用します。
var config = Configuration . Default . WithDefaultLoader ( ) ;
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
var context = BrowsingContext . New ( config ) ;
var document = await context . OpenAsync ( address ) ;
var cellSelector = "tr.vevent td:nth-child(3)" ;
var cells = document . QuerySelectorAll ( cellSelector ) ;
var titles = cells . Select ( m => m . TextContent ) ;または明示的なタイプでも同じです。
IConfiguration config = Configuration . Default . WithDefaultLoader ( ) ;
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes" ;
IBrowsingContext context = BrowsingContext . New ( config ) ;
IDocument document = await context . OpenAsync ( address ) ;
string cellSelector = "tr.vevent td:nth-child(3)" ;
IHtmlCollection < IElement > cells = document . QuerySelectorAll ( cellSelector ) ;
IEnumerable < string > titles = cells . Select ( m => m . TextContent ) ;この例では、
Anglesharpのすべてのコレクションは、LINQステートメントをサポートしています。 Anglesharpは、公式DOMには見られない要素コレクションに多くの有用な拡張方法を提供します。
Anglesharpは、.NET標準2.0互換ライブラリとして作成されています。これには含まれますが、以下に限定されません。
Anglesharpのドキュメントは、Docsフォルダーにあります。その他の例、ベストプラクティス、および一般的な情報を見つけることができます。ドキュメントには、よくある質問のリストも含まれています。
Wikiで言及されているハイパー参照のいくつかに従って、詳細についても利用できます。詳細な記事はCodeProjectで公開され、GithubのWikiにリンクが配置されます。
このプロジェクトの目的は、HTML、SVG、MATHML、およびCSSのW3C DOMのCLRに堅実な実装をもたらすことを目的としています。すべてC#で書かれています。アイデアは、基本的にJavaScriptでできるC#のDOMですべてを実行できるということです(さらに、もちろん)。
DOMのほとんどの部分は、(完全に指定された /正しい)実装をまだ見逃している可能性がありますが、DOMのほとんどの部分が含まれています。 v1.0の目標は、公式のW3C仕様(WhatWGによる有用な拡張機能を備えた)に従って、実質的に関連するすべてのパーツを実装することです。
APIはDOM4仕様に近いですが、ネーミングは.NETコンベンションに適用するように調整されています。それにもかかわらず、AnglesharpをJavaScriptエンジンに本当に役立つようにするために、対応するインターフェイス(および方法、プロパティなど)に属性が配置されており、公式仕様のフィールドのステータスを示しています。これにより、公式APIを使用してDOMオブジェクトの自動生成が可能になります。
これは長期的なプロジェクトであり、最終的に最も重要な角度ブラケットベースのハイパーテキストの最先端のパーサーになります。
私たちの希望は、このプロジェクトのWeb解析と図書館を中心にコミュニティを構築することです。これまでのところ、私たちには大きな貢献がありましたが、その目標は完全には達成されていませんでした。助けたいですか?私たちに連絡してください!
Anglesharpが現在欠落していることを知っていて、機能を実装することをいとわない場合、あなたの貢献は大歓迎です!また、あなたが本当にクールなアイデアを持っているなら - 恥ずかしがらないでください、私たちはそれを聞きたいです。
APIを改善する方法(または不足しているもの)をどのように改善するかがある場合は、投稿 /メッセージも大歓迎です。たとえば、過去にAnglesharp( HTMLDocumentやHtmlDocumentなど)で使用されてきたいくつかのスタイルについての継続的な議論がありました。最後に、AnglesharpはHTMLDocumentの使用を停止しました(少なくともライブラリの外に見える)。 Anglesharpは、 IDocument 、 IHtmlElementなどの名前を使用します。この変更は、このような実り多い議論がなければ不可能でした。
このプロジェクトは常に追加の貢献者を探しています。貢献するコードがない場合でも、改善のアイデア、バグレポート、またはドキュメントの間違いです。これらは、このプロジェクトをアクティブに保つ貢献です。
ライブディスカッションは、Githubアカウントの使用をサポートするGitterチャットで行われます。
詳細については、貢献ガイドラインに記載されています。すべての貢献者は、貢献者ファイルにあります。
このプロジェクトは、私たちのコミュニティで予想される行動を明確にするために、貢献者契約によって定義された行動規範を採用しています。
詳細については、.NET Foundation Code of Condyを参照してください。
Anglesharpを頻繁に使用しているが、積極的な参加によってプロジェクトをサポートする時間がない場合は、Anglesharpプロジェクトがライトを維持していることを確認することに興味があるかもしれません。
したがって、BountySourceを介してバッキングモデルを作成しました。寄付は歓迎され、大歓迎です。私たちは主に、Anglesharpを改善する必要があるAnglesharpを改善するために、専用開発時間にお金を費やし、さらに.NETのWebユーティリティエコシステムに投資します(例えば、JavaScriptエンジン、その他のパーサー、またはAnglesharpのレンダラーがいくつかの優れたプロジェクトに言及するため)。
詳細については、BountySourceをご覧ください。
AnglesharpはC#の最新バージョンで書かれているため、Roslynがコンパイラとして必要です。 Windowsでは、Visual Studio 2019+のようなIDEを使用することをお勧めします。または、VSCODE(Omnisharpまたは別の適切な言語サーバープロトコルの実装を使用)は、他のプラットフォームで選択するツールである必要があります。
コードはできるだけきれいになろうとします。特に、次のルールが使用されます。
-Async接尾辞メソッドを使用しますただし、より重要なのは、テストの適切な使用法です。新しい機能には、機能をカバーし、回帰を防ぐための一連のテストが付属する必要があります。
非常に詳細な変更ログが存在します。主要なリリースに興味がある場合は、GitHubリリースをご覧ください。
このプロジェクトは、.NET Foundationによってサポートされています。
Anglesharpは、MITライセンスを使用してリリースされます。詳細については、ライセンスファイルを参照してください。