XMLをJavaで…1

http://www.hellohiro.com/xmldom.htmによるとXMLJavaで扱うにはDOMって概念が分からないといけないみたいだ。「DOMはDocument Object Modelの略です。XMLにアクセスするためのAPI(Application Programming Interface)です。W3Cによって仕様が公開されています。DOMは、XML文書をツリー構造として扱います。これを「DOMツリー」といいます。XML文書全体を解析してDOMツリーとしてメモリ上に保存するのでデータの多いXML文書を解析する場合は多くのメモリを消費します。」

ってことなんだけどこれを読んでもイマイチ分からないので、サンプルコードを見ながら勉強していくことにする。このサンプルコードを適当に変えれば自分の欲しい情報とってこれそうなんだけど、原理から理解するつもりで勉強しよう。サンプルコードは以下の通り。

helloworld.xml

<?xml version="1.0" encoding="Shift_JIS" ?>
<message>Hello World</message>

HelloWorldDOM.java

import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class HelloWorldDOM {
  public static void main (String[] args) {
    try {
      // ドキュメントビルダーファクトリを生成
      DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
      // ドキュメントビルダーを生成
      DocumentBuilder builder = dbfactory.newDocumentBuilder();
      // パースを実行してDocumentオブジェクトを取得
      Document doc = builder.parse(new File("helloworld.xml"));
      // ルート要素を取得(タグ名:message)
      Element root = doc.getDocumentElement();
      // 最初の子ノード(テキストノード)の値を表示
      System.out.print(root.getFirstChild().getNodeValue());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}


これを実行するとやっと 「Hello World」って文字が出力されるみたい。何をやっているか1つ1つ解説してみるか。

DocumentBuilderFactory とはXML ドキュメントから DOM オブジェクトツリーを作成するパーサをアプリケーションが取得できるようにするファクトリ。(http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/javax/xml/parsers/DocumentBuilderFactory.html

XML ドキュメントから DOM Document インスタンスを取得する API を定義します。このクラスを使用すると、アプリケーションプログラマXML ドキュメントから Document を取得することができます。(http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

Element インタフェースは、HTML 文書または XML 文書内の要素を表します。これらの要素は、自身に関連付けられた属性を持つことができます。 (http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

NodeList インタフェースは、順序付けられたノードの集合の抽象を提供します。この集合の実装方法を定義または制限することはありません。DOM 内の NodeList オブジェクトはライブオブジェクトです。http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/api/index.html

他に参考ページhttp://takeoba.com/index.php?%A4%E2%A4%C3%A4%C8Java%A4%CE%CC%E7