|
C#において、HTMLを構造解析するツールとしては、MSHTMLが代表です。(注:XMLパーサでもHTMLを扱えるらしいが、DOM扱いができないらしい) mshtmlに関しては、[[ActiveX Web Browserコンポーネントと併用する:http://www.microsoft.com/japan/msdn/academic/Articles/fun/03/]]方法の解説が多いのですが、Parser単体でも当然使えます。 ** HTMLの読み込み 一般的には、HTMLDocumentClassクラスのcreateDocumentFromUrl()を使います。URI(http://~、file://~)でHTMLを指定します。 HTMLDocumentClass parentDocument = new HTMLDocumentClass(); IHTMLDocument2 doc2 = parentDocument; IHTMLDocument4 doc4 = parentDocument; doc2.write("<html></html>"); doc2.close(); HTMLDocumentClass htmlDocument = doc4.createDocumentFromUrl(path, null) as HTMLDocumentClass; int i = 0; while (htmlDocument.readyState != "complete") { if (++i > 50) { // 時間切れのロジック } System.Threading.Thread.Sleep(70); System.Windows.Forms.Application.DoEvents(); } - 親ドキュメントを破棄してしまうと、子ドキュメントにも影響します。両者の生存期間を同一とすること。 [[ローカルファイルを読込・保存する特殊な方法:http://www.dotnet247.com/247reference/msgs/4/22784.aspx]]もあるようですが…。 ** HTMLのファイル保存 よくわかりません。どうするのが正しいのでしょう?(^^;;~ 最悪、outerHTMLで文字列に出力して、ローカルファイルを生成できますが、改行コードに違いがあったり、文字コードに注意が必要だったりします。 実装サンプル:~ [[HTMLを保存(完全)>C#/HTMLを保存(完全)]]