Challenge Engineer Life !

エンジニア人生を楽しみたい!仕事や趣味で学んだ技術的なことを書いていくブログです。

JDOM2でXMLファイルを出力してみる

以下のようなちょっとしたXMLJavaで出力したかったのですが

<?xml version="1.0" encoding="UTF-8"?>
<Product>
  <Option Id="Opt">
    <Name>
      <JPN>オプション品</JPN>
      <ENG>Option Item</ENG>
    </Name>
  </Option>
  <!-- Optionタグの繰り返し -->
</Product>

Java XML 出力」とか調べると色々方法がありそうで、どれがいいのやら…と(^^;

後日@kazuhira_rさんがまとめて下さってました!参考になりますm(_ _)m
JavaXMLを書き出す
http://d.hatena.ne.jp/Kazuhira/20130905/1378394482

とりあえず出力するだけで読み込んで解析するようなものではないので、以下サイトの2つを見比べて、試しにJDOMなるものを使ってみました。

JDOMサイト

http://www.jdom.org/

今はJDOM2.x系が最新のようです。

pom.xml

MavenのセントラルリポジトリにJDOM2があるので、以下定義。

<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom2</artifactId>
    <version>2.0.5</version>
</dependency>
コード
package jp.co.hoge.xmlexample;

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.jdom2.Attribute;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class App 
{
    public static void main( String[] args )
    {
        try {
            new App().createByJdom();
        } catch (IOException ex) {
            Logger.getLogger(App.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void createByJdom() throws IOException{
        //商品
        Element product = new Element("Product");
        Document document = new Document(product);
        
        //オプション品いくつか並べる
        for(int i = 0; i < 5; i++){
            Element option = new Element("Option");
            option.setAttribute(new Attribute("Id", "Opt" + i));
            document.getRootElement().addContent(option);
            
            Element name = new Element("Name");
            option.addContent(name);
            
            Element jpn = new Element("JPN");
            jpn.setText("オプション品" + i);
            name.addContent(jpn);
            
            Element eng = new Element("ENG");
            eng.setText("Option Item" + i);
            name.addContent(eng);
        }
        
        XMLOutputter xmlOut = new XMLOutputter(Format.getPrettyFormat());
        xmlOut.output(document, Files.newOutputStream(Paths.get("c:\\temp\\product.xml"), StandardOpenOption.CREATE_NEW));
    }
}

DOM Parserで書くより少し簡単に書ける、という感じなのかな。
他にどんなメリットがあるのか(性能とか)、もう少し要調査。
ってか日本語の情報も少ないので、あんまり使われない感じなのかな。。。

未だJavaで何かを書くときに、素で書くのがいいのか、ライブラリ使うのがいいのか、使うなら何がいいのか?の調査に時間かかってる…(-_-;

にほんブログ村 IT技術ブログへ
にほんブログ村 にほんブログ村 IT技術ブログ Javaへ
にほんブログ村