org.apache.xerces.dom.DocumentImpl

目的
プログラム中でDOMツリーを構築する

関連クラス

今回のソース
// DocumentImpl Sample

import java.io.*;
import org.apache.xerces.dom.DocumentImpl;
import org.apache.xml.serialize.*;
import org.w3c.dom.*;

public class Main
{
	public static void main(String args[])
	{
		// Documentを作成
		Document xml_doc = new DocumentImpl();

		// Root要素を追加
		Element root = xml_doc.createElement("Taka2s_World");
		xml_doc.appendChild(root);

		// Rootに子要素を追加
		Element music = xml_doc.createElement("Music");
		Text music_text = xml_doc.createTextNode("鋭意製作中...");
		music.appendChild(music_text);
		root.appendChild(music);

		Element zakki = xml_doc.createElement("雑記帳");
		zakki.setAttribute("更新頻度", "ほぼ毎日");
		root.appendChild(zakki);

		// XMLファイルに書き出し
		try
		{
			OutputFormat format = new OutputFormat(xml_doc);

//			メモ帳で見たいときはこっち
//			Writer writer = new OutputStreamWriter(new FileOutputStream("test.xml"), "Shift_JIS");
//			IE5で見たいときはこっち
			Writer writer = new OutputStreamWriter(new FileOutputStream("test.xml"), "UTF-8");

			XMLSerializer serializer = new XMLSerializer(writer, format);
			serializer.serialize(xml_doc);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
}
Source is here. (ZIP Format, 721Byte, Shift-JIS)

コンパイル&実行
javac Main.java
java Main

説明
(概略)

今回のプログラムでは、以下のようなDOMツリーを生成します。

タグに、「鋭意製作中...」というテキストを追加する処理、
更新頻度という属性を追加する処理をしています。

このクラスを使えば、XMLの構造を意識しなくても、
appendChildや、appendAttributeなどのメソッドを呼ぶだけで、
自動的にDOMツリーの構造を作ってくれるので、
アプリケーションからXMLを作り出すのが容易になります。

(サンプルプログラムの説明)


Element root = xml_doc.createElement("Taka2s_World");
ElementやTextを作るときは、DocumentクラスのcreateXxxを呼びます。
属性クラスAttrも作ることが出来ます。
music.appendChild(music_text);
<Music>鋭意製作中...</Music>というのは、一見フラットな構造に見えるんですが、
これは実は、MusicというElementの子として、
鋭意製作中というTextノードがぶら下がっている形になります。
なので、appendChildを呼んで、TextをMusicの子として追加しています。
zakki.setAttribute("更新頻度", "ほぼ毎日");
Textノードとは逆に、<雑記帳 更新頻度 = "ほぼ毎日">というのは、
フラットな構造であり、要素と属性には親子関係が無いので、
appendChildで追加することは出来ず、setAttributeメソッドで属性をセットします。