「Java」org.w3c.domクラスを使用してXML文書を生成する方法
説明
1.org.w3c.dom.DOMImplementation.createDocument(String namespaceURI, String qualifiedName,
DocumentType doctype) throws DOMException
指定された型のDOM Documentオブジェクトとその文書要素を作成します。
2.org.w3c.dom.Document.createElement(String tagName) throws DOMException
指定された型のDOM Documentオブジェクトとその文書要素を作成します。
3.Element getDocumentElement()
文書の文書要素になっている子ノードへの直接アクセス
4.org.w3c.dom.Node.appendChild(Node newChild) throws DOMException
ノードnewChildをこのノードの子のリストの末尾に追加します。
Javaコード
package com.arkgame.study;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.DOMImplementation;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class CreateXmlSample {
public static void main(String[] args) {
// DocumentBuilderFactoryの新しいインスタンスを取得
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
// DOMImplementationの新しいインスタンスの取得
DOMImplementation domImpl = builder.getDOMImplementation();
// 指定された型のDOM Documentオブジェクトとその文書要素を作成
Document document = domImpl.createDocument("", "empInfo", null);
// 文書の文書要素になっている子ノードへの直接アクセスを可能にする
Element root = document.getDocumentElement();
// 指定された型の要素を作成 city
Element cityNode = document.createElement("city");
// 指定された文字列を持つTextノードを作成
cityNode.appendChild(document.createTextNode("tokyo"));
root.appendChild(cityNode);
// 指定された型の要素を作成 employee
Element empNode = document.createElement("employee");
// 指定された文字列を持つTextノードを作成
empNode.appendChild(document.createTextNode("yamada"));
root.appendChild(empNode);
// 指定された型の要素を作成 age
Element ageNode = document.createElement("age");
// 指定された文字列を持つTextノードを作成
ageNode.appendChild(document.createTextNode("23"));
root.appendChild(ageNode);
// TransformerFactoryの新しいインスタンスを取得
TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer;
transformer = transFactory.newTransformer();
// DOMノードで新しい入力ソースを作成
DOMSource source = new DOMSource(document);
File cftXml = new File("C:\\data\\test.xml");
FileOutputStream os;
os = new FileOutputStream(cftXml);
// バイト・ストリームからStreamResultを構築
StreamResult result = new StreamResult(os);
// XML SourceをResultに変換
transformer.transform(source, result);
} catch (ParserConfigurationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (TransformerException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
実行結果
C:\data\test.xml
内容
<?xml version="1.0″ encoding="UTF-8″ standalone="no"?><empInfo><city>tokyo</city><employee>yamada</employee><age>23</age></empInfo>