DOM サンプル [5]
Java から XML ドキュメントを作成
サンプル
createXmlDocument.java
import java.io.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.*; import javax.xml.transform.stream.*; import org.w3c.dom.*; public class createXmlDocument { public static void main(String args[]) throws Exception { /* 要素をいくつ作るかを指定 */ BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); System.out.println("Input number to add elements in your XML file : " ); String str = bf.readLine(); int num = Integer.parseInt(str); /* Root要素を指定 */ System.out.println("Input Root element name : " ); String root = bf.readLine(); /* Document作成 * * [1] doc に、要素やデータを追加していく * [2] データを追加したい場合、DocumentのcreateTextNode()と * appendChild()で追加していく * */ DocumentBuilderFactory docBF = DocumentBuilderFactory.newInstance(); DocumentBuilder docBld = docBF.newDocumentBuilder(); Document doc = docBld.newDocument(); /* Root要素作成 */ Element rootElt = doc.createElement(root); doc.appendChild(rootElt); /* Root要素にコメントを追加 */ Comment cmnt = doc.createComment("This is Comment" ); rootElt.appendChild(cmnt); for (int i = 1; i <= num; i++) { /* 親要素名指定 */ System.out.println("Input the Element name : " ); String elmntName = bf.readLine(); /* 親要素値指定 */ System.out.println("Input the Element data : " ); String elmntData = bf.readLine(); /* 親要素作成 */ Element elmnt = doc.createElement(elmntName); elmnt.appendChild(doc.createTextNode(elmntData)); rootElt.appendChild(elmnt); /* 子要素作成 */ Element chdElmnt = doc.createElement("ChildOf" + elmntName); chdElmnt.setAttribute("Year", "2" + i); elmnt.appendChild(chdElmnt); } System.out.println(); System.out.println("[ Output ]" ); TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(System.out); tf.transform(source, result); if (bf != null) bf.close(); } }
出力
Input number to add elements in your XML file : 2 Input Root element name : rootElt Input the Element name : Elt1 Input the Element data : test1 Input the Element name : Elt2 Input the Element data : test2 [ Output ] <?xml version="1.0" encoding="UTF-8" standalone="no"?><rootElt><!--This is Comment--><Elt1>test1<ChildOfElt1 Year="21"/></Elt1><Elt2>test2<ChildOfElt2 Year="22"/></Elt2></rootElt>
関連記事
SAX
http://blogs.yahoo.co.jp/dk521123/6887527.htmlhttp://blogs.yahoo.co.jp/dk521123/6887579.html
http://blogs.yahoo.co.jp/dk521123/6888165.html
http://blogs.yahoo.co.jp/dk521123/6905573.html
http://blogs.yahoo.co.jp/dk521123/7962633.html
DOM
http://blogs.yahoo.co.jp/dk521123/6888291.htmlhttp://blogs.yahoo.co.jp/dk521123/6888466.html
http://blogs.yahoo.co.jp/dk521123/6901358.html
http://blogs.yahoo.co.jp/dk521123/6902765.html
http://blogs.yahoo.co.jp/dk521123/6887189.html