본문 바로가기

Java/JSP

jdom 으로 xml 생성 하기

주제 : jdom 라이브러리를 이용하여 기본적인 xml 을 생성하는 방법

 

내용 : jdom 은 xml 파싱 및 생성을 손쉽게 해주는 유용한 라이브러리이다.

        본 내용은 xml을 쉽게 만들고 파일로 생성하는 방법을 만들어 보고자 한다.

 

 

Java 예제

 

package jdomxml;

import java.io.FileOutputStream;
import java.io.OutputStreamWriter;

import org.jdom.Attribute;
import org.jdom.Comment;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;

public class XmlCreate {

 public static void main(String[] args) {

  // root 엘리먼트 생성
  Element rootEle = new Element("root");
  // root 엘리먼트의 version 어트리뷰트 추가
  rootEle.setAttribute(new Attribute("version", "0.0.1"));
  // root 엘리먼트의 컨텐츠 추가
  rootEle.addContent(new Comment("주석을 나타냅니다."));

  Element firstEle = new Element("first-child");
  firstEle.addContent("첫번째 입력 합니다.");
  rootEle.addContent(firstEle);

  rootEle.addContent(new Element("second-child").addContent("두번째 컨텐츠 입력"));

  Element thirdEle = new Element("third-child");
  thirdEle.addContent("세번째 컨텐츠");
  thirdEle.setAttribute("attrName", "attrValue");

  // CDATA 형식을 붙인다.

  thirdEle.addContent(new CDATA("그대로 출력되는 문자열"));
  rootEle.addContent(thirdEle);

  // 엘리먼트 생성 후 삭제하기
  rootEle.addContent(new Element("fourth-child").addContent("삭제할 4번째 컨텐츠 입니다."));
  rootEle.removeChild("fourth-child");

  // xml을 출력하기 위한 방법
  // Format.getPrettyFormat는 예쁘게 xml 줄 맞춰주는것이고
  // setEncoding는 인코딩 형식 정의함
  XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat().setEncoding("utf-8"));
  // 출력을 하기 위해서는 도큐먼트가 필요하므로 도큐먼트를 생성하여
  // root 엘리먼트를 붙인다.
  Document doc = new Document(rootEle);

  try {
   FileOutputStream fos = new FileOutputStream("file.xml");
   OutputStreamWriter os = new OutputStreamWriter(fos, "utf-8");
   // 출력하기 위해서 출력스트림이나 writer를 지원하므로
   // 파일이나 콘솔에 출력하기 위해서는 적절한 스트림이나 writer를 사용한다.

   // 파일에 쓰기
   // outputter.output(doc, os);

   // 콘솔에 쓰기
   outputter.output(doc, System.out);

   // String 으로 출력

   outputter.outputString(doc);

   // 아래 방법은 xml 헤더가 추가되지 않는다.
   // outputter.output(rootEle, System.out);
   os.close();
  }
  catch(Exception e) {
   System.out.println(e);
  }
 }
}