「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>

Java

Posted by arkgame