読者です 読者をやめる 読者になる 読者になる

Challenge Java EE !

Java EEを中心に趣味や仕事における開発メモを書いています。

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

Java XML JDOM

以下のようなちょっとした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へ
にほんブログ村