<%@ Page Language="C#" Debug="true"%> VB.NETでHTML コードにアクセスするためのオブジェクトモデル
ヒット カウンタ
(since 2006/4/27) K-solution のホームページへようこそ。
▼お気に入りに追加

▼天気予報

-天気予報コム-

▼サイト内アクセスランキング
 

 
現在位置 : トップ / 上へ/ VB.NETでHTML コードにアクセスするためのオブジェクトモデル

最終更新日 2006/12/31 11:43:30

MSHTMLライブラリ と Microsoft HTML Object Library と SHDocVwライブラリ

はじめに

 Visual Studio .NET 2003 では、HTML コードにアクセスするために、次のようなオブジェクトモデルが用意されています。使用するには、Microsoft HTML Object Library(COM)、MSHTMLライブラリ(.NET)、SHDocVwライブラリ(COM)を参照設定してプロジェクトに組み込む必要があります。

Microsoft HTML Object Library

 HTML DOM にアクセスするためのオブジェクトライブラリです。

 Web ページをダウンロードする方法〜 MSHTML 編〜 で同オブジェクトモデルの具体的な使用例があります。

MSHTMLライブラリとは

 MSHTML とは、Internet ExplorerIE) の機能を部品化(コンポーネント化)したものです。このコンポーネントを利用すると、HTML ファイルというプレーンなテキスト文書をオブジェクトとして扱うことができます。

 以下は、MSDN からの引用です(Visual C# .NET による MSDNAA おもしろプログラミング : 第 2 回 VC# で MSHTML)。

MSHTML は、大きく分けて HTML パーサと HTML レンダリングエンジンから構成されています。HTML パーサは、HTML の構文を解析し、プログラムから利用しやすいように HTML 文書の情報を階層構造化します。また、 HTML レンダリングエンジンは、人間が解読しにくいタグ文書を表や画像などの形にレンダリングし、人間が閲覧しやすい形で表示を行います。

SHDocVwライブラリとは

 SHDocVw とは、IE のブラウザ機能にアクセスするためのコンポーネントです。このコンポーネントを利用すると、IE を操作することができます。

MSHTMLライブラリを使いこなすために役立つページ

 今紹介したVisual C# .NET による MSDNAA おもしろプログラミング : 第 2 回 VC# で MSHTMLVisual C# .NET による MSDNAA おもしろプログラミング : 第 3 回 VC# で MSHTML テクノロジ は、サンプルコードが掲載されているだけでなく、理論面も解説されていてためになります。HTML パーサHTML レンダリングエンジンについてや、HTML パーサと DOM(Document Object Model) との関係など興味深いテーマが取り上げられています。

サンプルコード

Web ブラウザコントロール(SHDocVwライブラリ)と併用する

 MSHTMLライブラリとSHDocVwライブラリとを利用すれば、IE を起動して特定のページを開き、開いたページを操作するなどといったことができます。ネット上でもこのサンプルは比較的よく紹介されています。

 参考のため、私が実際に使っているサンプルコードを書いておきます。開発言語は、VB.NET です。なお、サンプルコードでは、IE のインスタンスを作成するのに、CreateObeject 関数を使っていますが、これは、「dim objIE as New SHDocVw.InternetExplorer.application」 とした方がいいかもしれません。

 '****IEのオブジェクト(インスタンス)を作る
Dim objIE As SHDocVw.InternetExplorer
objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True

'****URLを指定し、Web ページを開く
objIE.Navigate("(url を記述)")

'****ページ読み込みまで待機
Do While objIE.Busy = True
    System.Windows.Forms.Application.DoEvents()
Loop

'****開いたページをオブジェクトとして操作する(例)
Dim objHtml As mshtml.HTMLDocument
Dim objTable As mshtml.HTMLTable
objHtml = objIE.Document
'****id が"MenuTable"であるテーブルタグを探し出し、特定の処理をする
For Each objTable In objHtml.all.tags("table")
    If objTable.id = "MenuTable" Then
        (操作内容)
    End If
Next

MSHTMLライブラリの HTML パーサ機能を単体で利用する

 以上のように、MSHTMLライブラリは、通常SHDocVwライブラリと併用して利用されていることが多いようですが、HTML パーサ単体として使用することももちろん可能です。

 MSHTMLライブラリの HTML パーサ機能だけを利用したコード例としては、C#/mshtml - JomoLabo が参考になります。