634 – JAXP – DOM – 属性の追加

1月 1, 2003 · Posted in Java API for XML Processing · Comment 

属性を追加する

XML文章中の任意のノードに属性を追加する方法を紹介する。

ルート要素に属性Noを追加する例

package xml.dom;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class test {
    public static void main(String[] args){
        try{
            // ドキュメントビルダーの作成
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = dbFactory.newDocumentBuilder();

            // ドキュメントの作成
            DOMImplementation domImpl = builder.getDOMImplementation();
            Document doc = domImpl.createDocument("", "root", null);

            // ルートノードの参照を取得
            Element root = doc.getDocumentElement();
            root.setAttribute("No", "0001");

            // ファイルとして出力(検証用)
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transformer = transFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            FileOutputStream os = new FileOutputStream(new File("file.xml"));
            StreamResult result = new StreamResult(os);
            transformer.transform(source, result);

        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(ParserConfigurationException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

結果(file.xml)

<?xml version="1.0" encoding="UTF-8"?>
<root No="0001"/>

属性を追加したい要素に対してsetAttributeメソッドを実行する。

634 – JAXP – DOM – 要素の追加

1月 1, 2003 · Posted in Java API for XML Processing · Comment 

要素を追加する。

XML文章に要素を作成して追加する方法を紹介する。

ルート要素の中にname要素を追加する例

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class test {
    public static void main(String[] args){
        try{
            // ドキュメントビルダーの作成
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = dbFactory.newDocumentBuilder();

            // ドキュメントの作成
            DOMImplementation domImpl = builder.getDOMImplementation();
            Document doc = domImpl.createDocument("", "root", null);

            // ルートノードの参照を取得
            Element root = doc.getDocumentElement();

            // ノードの作成〜追加
            Element name = doc.createElement("name");
            root.appendChild(name);

            // ファイルとして出力(検証用)
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transformer = transFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            FileOutputStream os = new FileOutputStream(new File("file.xml"));
            StreamResult result = new StreamResult(os);
            transformer.transform(source, result);

        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(ParserConfigurationException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

結果(file.xml)

<?xml version="1.0" encoding="UTF-8"?>
<root><name/></root>

DocumentオブジェクトのcreateElementメソッドを利用して要素を作成する。

ただし、作成した時点ではどの要素とも関連を持っていないので、appendChildメソッドで任意の要素以下に追加する。

634 – JAXP – DOM – 要素内容を含む要素の追加

1月 1, 2003 · Posted in Java API for XML Processing · Comment 

要素に対してテキストノードを追加する

要素内容を含んでいる要素をXML文章に追加する。

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.DOMImplementation;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Text;

public class test {
    public static void main(String[] args){
        try{
            // ドキュメントビルダーの作成
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = dbFactory.newDocumentBuilder();

            // ドキュメントの作成
            DOMImplementation domImpl = builder.getDOMImplementation();
            Document doc = domImpl.createDocument("", "root", null);

            // ルートノードの参照を取得
            Element root = doc.getDocumentElement();

            // ノードの作成〜追加
            Element name = doc.createElement("name");
            root.appendChild(name);

            // テキストノードの作成〜追加
            Text value = doc.createTextNode("tarou");
            name.appendChild(value);

            // ファイルとして出力(検証用)
            TransformerFactory transFactory = TransformerFactory.newInstance();
            Transformer transformer = transFactory.newTransformer();
            DOMSource source = new DOMSource(doc);
            FileOutputStream os = new FileOutputStream(new File("file.xml"));
            StreamResult result = new StreamResult(os);
            transformer.transform(source, result);

        }catch(FileNotFoundException e){
            e.printStackTrace();
        }catch(ParserConfigurationException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

結果(file.xml)

<?xml version="1.0" encoding="UTF-8"?>
<root><name>tarou</name></root>

まず最初に、Documentオブジェクトを使用して要素とテキストノードを作成する。要素に対してテキストノードを追加して、その要素を任意の要素に追加する。

次ページへ »