DOM (Document Object Model)

ドム

 XMLパーサにアクセスするためのAPIの1つ。W3Cが公式に公開した唯一のAPIである。DOMには、Level 1、2、3などいくつかのレベルがある。レベルが大きい方が、より新しく高機能だ。

 DOMは、XML文書を「DOMツリー」と呼ばれるツリー構造として扱う。そのため、XMLパーサがXML文書全体を読み込んだ後でなければ、文書内のデータにアクセスすることができない。また、DOMツリーは通常、メモリ上に展開されるため、大規模なXML文書を処理する場合には、その分メモリ容量も要求される。その代わり、DOMを利用すれば、XML文書内のデータの順番に関係なくアクセスできる。

 DOMは公開された標準であるため、これに準拠したXMLパーサが複数公開されている。DOMを用いてアプリケーションソフトを記述すると、そのアプリケーションから利用可能なXMLパーサの選択の幅が広がると共に、不都合発生時に開発者がXMLパーサを入れ替えることも、それほど困難ではない。

 以下は、WindowsのWSH(Windows Scripting Host)のVBS言語で記述されたサンプルである。DOMを用いてXML文書を読み込み、ツリー構造をトラバースしながらノードの内容をテキストとして出力する。

Dim objSrcDoc
Dim boolValue
Set objSrcDoc = CreateObject("Microsoft.XMLDOM")
boolValue = objSrcDoc.Load("target.xml")
If Not boolValue Then
  MsgBox "XMLDOM: load failed"
End If
walkNodes objSrcDoc

Sub walkNodes(elem)
Dim i
For i = 0 To elem.childNodes.length - 1
  If elem.childNodes.Item(i).hasChildNodes() Then
    walkNodes elem.childNodes.Item(i)
  End If
  WScript.Echo elem.childNodes.Item(i).Text
Next
End Sub

 XMLのAPIとしては、DOMの他にSAX(Simple API for XML)があり、どちらも広く使用されている。

 まれに、DOMを、W3CのDOMを示すのではなく、一般名詞として使用しているケースがある。この場合は、W3CのDOMとは仕様が異なる可能性がある。

XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

アイティメディアの提供サービス

キャリアアップ