DOM: XMLデータを作成する(1)

2006年08月20日(日)更新


■XMLデータの作成

たけち: 今回からは、XMLデータを作成することを学んでゆこう。

さらら: はっ、はい。これまでは、XMLデータの読み方を教えてもらったものね。

たけち: うん。で、今回は、ルート要素だけの簡単なXMLデータを作ってみるね。


■出力するサンプルXMLデータ(1)と作成手順

たけち: まず、今回作成するサンプルXMLデータがどんなものかを示しておくね。

出力サンプルXMLデータ(1) manyosyuノードだけのXMLデータ

<?xml version="1.0" encoding="UTF-8" ?>
<manyosyu/>

さらら: あら、manyosyuという空の要素があるだけなのね。

たけち: そうそう。次の図に、この簡単なXMLデータのDOM構造と、作成手順を載せておくね。最初の@ DOCUMENTの生成、そして最後のC DOMオブジェクトを文字列として出力 については特に気にしなくていいよ。

さらら: はい。

出力サンプルXMLデータの構造と作成手順の例

たけち: A manyosyuノードの生成 と B manyosyuノードの追加 で使っているメソッドについて簡単に説明しておくね。いずれも、
org.w3c.dom.Documentクラス
のメソッドだからね。詳しいことは、たくさんのノードを作ったり、追加したりするときに説明するね。

さらら: はい。


org.w3c.dom.Document:createElementメソッド

int

createElement()

機能: 要素(Element)ノードを生成します。
パラメタ: String 要素名
戻り値: Element 要素ノード

org.w3c.dom.Document:appendChildメソッド

int

appendChild()

機能: 指定したノードを追加します。
パラメタ: Node 追加するノード
戻り値: Node 追加されたノード

■DOMサンプルプログラム manyosyuノードだけのXMLデータの生成と出力

たけち: じゃ、次に今回のDOMサンプルプログラム(21)のソースコードを載せておくね。

さらら: はい。

DOMサンプルプログラム(21) DOMSample21.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package dom.study.sample_2;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class DOMSample21 {

    public static void main(String[] args) {	
		
      try {
        DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docbuilder = dbfactory.newDocumentBuilder(); // DocumentBuilderインスタンス
        Document document = docbuilder.newDocument();          // Documentの生成

        /*
         * root要素として manyosyu要素を生成
         */
         Element root = document.createElement("manyosyu");    // manyosyuノード作成
         document.appendChild(root);                // ノードをDocumentに追加
			
         /*
          * DOMオブジェクトを文字列として出力
          */ 
         TransformerFactory tfactory = TransformerFactory.newInstance(); 
         Transformer transformer = tfactory.newTransformer(); 
         transformer.transform(new DOMSource(document), new StreamResult(System.out)); 

      } catch (ParserConfigurationException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
      } catch (TransformerException e) {
        // TODO 自動生成された catch ブロック
        e.printStackTrace();
      }

    }
}

たけち: 今回は、28行目と29行目に注目してね。28行目の
    Element root = document.createElement("manyosyu");
で、manyosyuという名前のノードを生成して、29行目の
    document.appendChild(root);
で、そのノードをDocumentに追加しているよね。

さらら: はい。わかるわ。


■DOMSample21の実行例

たけち: じゃ、このDOMSample21プログラムを実行させてみよう。実行結果として、画面に次のような文字列が表示されるよ。

DOMサンプルプログラム(21) DOMSample21.javaの実行結果
<?xml version="1.0" encoding="UTF-8"?>
<manyosyu/>

DOMSample21によるXMLデータの作成結果

さらら: manyosyuという空の要素だけがあるXMLデータが表示されているわ。

たけち: 今回は、XMLデータを作成し、文字列として出力する基本的な手順を学んだということで、今回はこれでおしまい。おつかれさま。次回からは、少しずつ複雑な構造を持ったXMLデータを作ってゆこうね。

さらら: あっ、は〜い。楽しみだわ。ありがとね。

→ 次回はXMLファイルを作成するです。....... (^ ^;