JavaでXMLファイルを作成する方法 – (DOM Parser)
DOMには、XMLファイルを簡単に作成するための多くの便利なクラスが用意されています。まず、
DocumentBuilder
クラスでDocumentを作成し、
Element
クラスですべてのXMLコンテンツノード、属性を定義する必要があります。最後に、
Transformer
クラスを使用してXMLコンテンツ全体をストリーム出力に出力します(通常はFile)。
このチュートリアルでは、DOM XMLパーサーを使用してXMLファイルを作成する方法を説明します。
DOMパーサーの例
この例の最後には、 “file.xml”という名前のXMLファイルが作成されます。
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <company> <staff id="1"> <firstname>yong</firstname> <lastname>mook kim</lastname> <nickname>mkyong</nickname> <salary>100000</salary> </staff> </company>
File:WriteXMLFile.java
– XMLファイルを作成するためのJavaクラス。
package com.mkyong.core; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; 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.Attr; import org.w3c.dom.Document; import org.w3c.dom.Element; public class WriteXMLFile { public static void main(String argv[]) { try { DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); //root elements Document doc = docBuilder.newDocument(); Element rootElement = doc.createElement("company"); doc.appendChild(rootElement); //staff elements Element staff = doc.createElement("Staff"); rootElement.appendChild(staff); //set attribute to staff element Attr attr = doc.createAttribute("id"); attr.setValue("1"); staff.setAttributeNode(attr); //shorten way //staff.setAttribute("id", "1"); //firstname elements Element firstname = doc.createElement("firstname"); firstname.appendChild(doc.createTextNode("yong")); staff.appendChild(firstname); //lastname elements Element lastname = doc.createElement("lastname"); lastname.appendChild(doc.createTextNode("mook kim")); staff.appendChild(lastname); //nickname elements Element nickname = doc.createElement("nickname"); nickname.appendChild(doc.createTextNode("mkyong")); staff.appendChild(nickname); //salary elements Element salary = doc.createElement("salary"); salary.appendChild(doc.createTextNode("100000")); staff.appendChild(salary); //write the content into xml file TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new File("C:\\file.xml")); //Output to console for testing //StreamResult result = new StreamResult(System.out); transformer.transform(source, result); System.out.println("File saved!"); } catch (ParserConfigurationException pce) { pce.printStackTrace(); } catch (TransformerException tfe) { tfe.printStackTrace(); } } }
新しいXMLファイルが ”
C:¥¥file.xml
“に作成され、デフォルトのUTF-8がエンコードされます。
StreamResult result = new StreamResult(System.out); transformer.transform(source, result);