ちょっと生きづらさを抱えた人へ、気持ちを楽にするためのお手紙です。

Javaでxmlを作成

細かい説明は後で。
今日は眠いから取りあえずアップ。

こんなXMLを作りたい。

<root>
<devil>
<misician no="0">小暮伝衛門</misician>
<album no="0">好色萬声男</album>
</devil>
<devil>
<misician no="1">CANTA</misician>
<album no="1">流星と春の嵐</album>
</devil>
</root>
package com.fudebaco.util;

import com.fudebaco.bean.SampleXmlBean;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
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.Document;
import org.w3c.dom.Element;

public class XmlSample {

	public static void main(String args[]){
        List<SampleXmlBean> list = createSampleList();
		try {
			DocumentBuilderFactory dbfactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder docbuilder = dbfactory.newDocumentBuilder();
			Document document = docbuilder.newDocument();

            // ノード生成
            Element root = document.createElement("root");
            // ノードをDocumentに追加
            document.appendChild(root);
            
            for (int i = 0; i < list.size(); i++) {
                SampleXmlBean bean = list.get(i);

                Element sep = document.createElement("devil");
                root.appendChild(sep);
                
                Element elem1 = document.createElement("misician");
                elem1.setTextContent(bean.getElem1());
                elem1.setAttribute("no", Integer.toString(i));
                sep.appendChild(elem1);
                
                Element elem2 = document.createElement("album");
                elem2.setTextContent(bean.getElem2());
                elem2.setAttribute("no", Integer.toString(i));
                sep.appendChild(elem2);
            }
			/*
		     * DOMオブジェクトを文字列として出力
		     */
		    TransformerFactory tfactory = TransformerFactory.newInstance();
		    Transformer transformer = tfactory.newTransformer();
            transformer.setOutputProperty("method", "html"); // 宣言を出さない
		    transformer.transform(new DOMSource(document), new StreamResult(System.out));
		} catch (Exception e) {
			// TODO 自動生成された catch ブロック
			e.printStackTrace();
		}
	}
    
    private static List<SampleXmlBean> createSampleList() {
        List<SampleXmlBean> list = new ArrayList<>();
        
        SampleXmlBean bean1 = new SampleXmlBean();
        bean1.setElem1("小暮伝衛門");
        bean1.setElem2("好色萬声男");
        
        list.add(bean1);
        
        SampleXmlBean bean2 = new SampleXmlBean();
        bean2.setElem1("CANTA");
        bean2.setElem2("流星と春の嵐");
        
        list.add(bean2);
        
        return list;
    }
}

コメントを残す

メールアドレスが公開されることはありません。