Last-modified: 2004-03-11 (木) 07:05:22 (7344d)

 C#において、HTMLを構造解析するツールとしては、MSHTMLが代表です。(注:XMLパーサでもHTMLを扱えるらしいが、DOM扱いができないらしい)
 mshtmlに関しては、ActiveX Web Browserコンポーネントと併用する方法の解説が多いのですが、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();
}
  • 親ドキュメントを破棄してしまうと、子ドキュメントにも影響します。両者の生存期間を同一とすること。

 ローカルファイルを読込・保存する特殊な方法もあるようですが…。

HTMLのファイル保存

 よくわかりません。どうするのが正しいのでしょう?(^^;;

 最悪、outerHTMLで文字列に出力して、ローカルファイルを生成できますが、改行コードに違いがあったり、文字コードに注意が必要だったりします。

 実装サンプル:

HTMLを保存(完全)


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