「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();
}
}
}
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();
}
}
}
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>