// 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)
タグに、「鋭意製作中...」というテキストを追加する処理、
更新頻度という属性を追加する処理をしています。
このクラスを使えば、XMLの構造を意識しなくても、
appendChildや、appendAttributeなどのメソッドを呼ぶだけで、
自動的にDOMツリーの構造を作ってくれるので、
アプリケーションからXMLを作り出すのが容易になります。
(サンプルプログラムの説明)
ElementやTextを作るときは、DocumentクラスのcreateXxxを呼びます。 属性クラスAttrも作ることが出来ます。music.appendChild(music_text);
<Music>鋭意製作中...</Music>というのは、一見フラットな構造に見えるんですが、 これは実は、MusicというElementの子として、 鋭意製作中というTextノードがぶら下がっている形になります。 なので、appendChildを呼んで、TextをMusicの子として追加しています。zakki.setAttribute("更新頻度", "ほぼ毎日");
Textノードとは逆に、<雑記帳 更新頻度 = "ほぼ毎日">というのは、 フラットな構造であり、要素と属性には親子関係が無いので、 appendChildで追加することは出来ず、setAttributeメソッドで属性をセットします。