【Java】【XML】DOM [5]

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>