私が頭がおかしくて、c#で基本的なHTMLレンダリングエンジンを実装したいとしましょう。WPFコントロールを使用してHTMLレイアウトを表示したいと思います。
そのようなアイデアで得られるものは何もありませんが、それでも試してみたいです!では、これを実現するのに役立つライブラリ、プロジェクト、ドキュメントは何でしょうか。
私が頭がおかしくて、c#で基本的なHTMLレンダリングエンジンを実装したいとしましょう。WPFコントロールを使用してHTMLレイアウトを表示したいと思います。
そのようなアイデアで得られるものは何もありませんが、それでも試してみたいです!では、これを実現するのに役立つライブラリ、プロジェクト、ドキュメントは何でしょうか。
WPF XAMLの機能はHTMLの機能のスーパーセットであるため、実行する必要があるのは、一方を他方にマップすることだけです。
入力がXHTMLの場合は、XSLTまたはLINQ-to-XMLを使用してデータを取得できます。
XSLTを使用する場合は、XamlReader.Parse()で解析してウィンドウまたは他のWPFコンテナーに追加できるUIElementを取得するXAMLが作成されます。XSLTは比較的制限されているため、これはおそらくLINQ-to-XMLを使用するよりも手間がかかります。
LINQ-to-XMLを使用する場合は、XAMLを生成してから、XSLTの場合と同様に解析するか、オブジェクトツリーを直接作成するかを選択できます。LINQ-to-XMLを使用してXAMLを作成する場合、通常の優先言語であるC#ではなく、VB.NETで実際の翻訳コードを記述します。VB.NETの「XMLLiteral」構文により、ジョブのその部分が簡単になります。
入力がXHTMLではなく任意のHTMLである場合、サードパーティのライブラリを使用してXHTMLに変換し、そこから作業します。HTMLの構文解析の奇妙さをすべて処理することは多くの作業であり、おそらく実際の目標とはほとんど関係がありません。
HTMLをWPFオブジェクトに変換せずに表示したいだけの場合は、フレームコントロールを使用できます。
HTMLのレンダリングはxamlファイルに変換するだけで簡単になり、レンダリングは非常に高速になります。美しいズームとフォントを備えたハードウェアアクセラレーションブラウザを入手できます。
しかし、cssをどのように処理しますか?スタイルを作成する必要があります(Yuck)?DHTML、HTML5、およびJavaスクリプト..非常に多くのページで、これらのthinsgが必要になり、表示することさえできなくなりました。
Javaスクリプトの簡単な方法は、誰もが使用するパーサーを使用することです。より良い方法があるかもしれません(そしてJavaスクリプトからCILコンパイラーへ?)
htmlパーサー、xamlの代替への型付きマッピング、興味深い...おそらくパーサーレクサーhttp://www.antlr.org/にantlrを使用できます。具体的には、興味深いコードプロジェクト、プロジェクトhttp://www.codeprojectを使用できます。 .com / KB / cs / TagBasedHtmlParser.aspx、おそらくhtmlをxamlに変換してみることができますが、これは非常に興味深いことです:)
このプロジェクトはまさにあなたが達成しようとしているものだと思います:
https
://htmlrenderer.codeplex.com/
多分あなたはそれに取り組んでHTML5とCSS3のサポートを追加することができます!