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を保存(完全)]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS