DOM: DOCUMENTノードから始めましょう

2007年06月17日(日)更新


■DOMの準備

たけち: さて。今回からJavaでDOMを扱う勉強をしよう。

さらら: うっ、うん。ついていけるかしら。。。

たけち: SAX(SAXってなに?以降を参照してください)が分かったんだから。

さらら: うん。そうだね。

たけち: まずは、準備だけど、次のページを参考にして準備をしておこうね。
SAXを使う準備-1Eclipseで簡単なJavaプログラム作成


■EclipseでDOMSampleプロジェクトを作成

たけち: これからいくつかのJavaプログラムのサンプルをつくるから、EclipseでDOMSampleプロジェクトを作成しておこうね。

さらら: はい。SAX(8) サンプルプログラムの作成(3)のときと同じようにすればいいのね。

たけち: そうそう。やってごらん。パッケージ名などは、さららの好きなようにしていいよ。

さらら: うん。じゃあ、SAXのときと同じような感じで、
パッケージ名 = dom.study.sample_1
にしておくわね。

DOMSampleプロジェクトの作成


■簡単なXMLデータサンプルの作成

たけち: では、DOMのドキュメントモデルを簡単に紹介しただけだから、少しずつ具体的にみていこうね。まずは、要素がひとつだけの簡単なXMLデータを作っておこう。

さらら: はい。

サンプルXMLデータ(1) sample.xml

<?xml version="1.0" encoding="UTF-8" ?>
<sample>サンプルです</sample>

さらら: sampleという名前の要素がひとつだけあるのね。

たけち: そうだね。これをDOMの視点で見てみるとつぎのような図になるね。

さらら: はい。

sample.xmlのDOMツリー


■XMLデータのパースまで

たけち: 今回は、JavaでDOMを扱うための最初のステップを見ておくことにしようね。

さらら: えぇ。

たけち: さっそくだけど、次のソースコードをみて。

DOMサンプルプログラム(1) DOMSample1.java
01
02
03
04
05
06
07

08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

package dom.study.sample_1;

import java.io.IOException;
import org.apache.xerces.parsers.DOMParser;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.xml.sax.SAXException;


public class DOMSample1 {

  public static void main(String[] args) {

    String file = args[0];

    try {

      DOMParser parser = new DOMParser();       // パーサの生成
      parser.parse(file);                                     // XMLファイルのパース

      Document document = parser.getDocument();   // DOCUMENTノードの取得

      System.out.println(document.getNodeName());   // DOCUMENTノードのノード名
      System.out.println(document.getNodeType());   // DOCUMENTノードのノードタイプ

    } catch (SAXException e) {
      System.out.println("XMLデータが不正です。");
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

さらら: あらあら・・・・(^ ^;

たけち: 少しずつ見てゆくね。まず、03行目から07行目は、DOMを扱う上で必要なことだから、これはこう書くの、って思うだけでいいよ。

さらら: はい。

たけち: 17行目でDOMパーサを用意しているね。
      DOMParser parser = new DOMParser();
これだけだよ。

さらら: あっ、そうなんだ。SAXのとき(SAX(7) サンプルプログラムの作成(2)を参照してください)より簡単ね。

たけち: あとは18行目でDOMパーサにxmlファイルのパース処理を依頼しているね。
      parser.parse(file);
これで準備が終わりだよ。

さらら: fileは、xmlファイルなのね。

たけち: そうそう。このサンプルプログラム "DOMSample1" を起動するときに読み込ませるXMLファイル名を指定すればいいんだよ。


■DOCUMENTノードの取得と確認

たけち: で、最初のは、20行目で行っているよ。
      Document document = parser.getDocument();

さらら: はい。

たけち: で、22行目と23行目で、DOCUMENTノードの情報を表示させているんだね。

さらら: そうなんだ。それぞれ何かしら?

たけち: 22行目のdocument.getNodeName()で、DOCUMENTノードのノード名を取得しているんだ。

さらら: へぇ、DOCUMENTノードノード名ってあるのね。

たけち: うん。#documentという名前が割り当てられているようだね。

さらら: 23行目は?

たけち: 23行目のdocument.getNodeType()で、DOCUMENTノードのノードタイプを取得しているんだ。

さらら: それはなにかしら?

たけち: うん。DOMとJavaScript: DOMってなぁに?で見てもらった12個のノードにはそれぞれデータタイプ番号が割り当てられているんだね。

さらら: あっ、そうなの。。。じゃあ、DOCUMENTノードは何番なの?

たけち: えっとね。。。9だね。


■サンプルプログラム DOMSample1の実行結果の確認

さらら: あっ、そうなの。

たけち: じゃ、このDOMSample1を実行した結果をみてみよう。

さらら: はい。

サンプルプログラム DOMSample1の実行結果の確認

さらら: あっ、DOCUMENTノードのノード名が #documentで、 データタイプ番号が 9 ということが確認できたのね。

たけち: そうだね。

さらら: DOMのとっかかりがわかったのでうれしいわ。

たけち: じゃ、今回はここまでにしておくね。

さらら: は〜い!! (^ ^*

次回は、子ノードを取得するです。 (^ ^;