본문 바로가기
웹/Java

JDOM 2.0.4 를 이용한 XML 읽기 쓰기

by 브래드.권 2013. 4. 30.

 

 

 

Version 1.0

문서 이력

2013-03-29 최초 작성 Ver 1.0

 

 

 

JDOM Java 에서 XML 을 손쉽게 읽고 쓸 수 있게 해주는 라이브러리입니다.

http://www.jdom.org 에서 확인하시고 라이브러리 다운로드가 가능하며 2013-03-29 현재 JDOM 2.0.4 가 최신 버전이네요.

 

여기서는 JDOM 2.0.4 를 이용하여 XML 을 읽고 쓰는 방법입니다.

Users.xml 파일을 읽는 readUsersXML 함수와 Users2.xml 파일을 생성하는 createUsers2XML 함수로 샘플 코드를 작성하였습니다.

 

<샘플 코드>

 

/*

 * 작성자 : NineBear™

 * 작성일 : 2013-03-29

 *

 * JDOM 2.0.4 이용하여 XML 파일을 읽고 생성하는 샘플 코드입니다.

 */

package test;

 

import org.jdom2.Document;

import org.jdom2.Element;

import org.jdom2.input.SAXBuilder;

import org.jdom2.output.Format;

import org.jdom2.output.XMLOutputter;

import java.util.List;

import java.io.*;

 

public class Test {

        /*

         * 메인 함수

         */

        public static void main(String[] args) {

               //Users.xml 파일은 프로젝트 최상위 폴더에 존재해야

               String fileName = "Users.xml";

              

               readUsersXML(fileName);

               System.out.println("-------------------------");

               createUsers2XML();

        }

       

        /*

         * readUsersXML 함수

         * Users.xml 파일을 읽어 데이터를 콘솔에 출력한다.

         */

        private static void readUsersXML(String fileName) {

               try {

                       SAXBuilder builder = new SAXBuilder();

                      

                       //XML 파일을 읽는다.

                       Document doc = builder.build(fileName);

                      

                       //XML 데이터를 순차적으로 읽어서 출력

                       Element root = doc.getRootElement();

                       List<Element> elements = root.getChildren();

                      

                       for (Element element : elements) {

                              List<Element> subElements = element.getChildren();

                             

                              if (!subElements.isEmpty()) {

                                      System.out.println(element.getName());

                                     

                                      for (Element subElement : subElements) {

                                             System.out.println(subElement.getName()

+ " : " + subElement.getText());

                                      }

                              }

                              else {

                                      System.out.println(element.getName() + " : "

+ element.getText());

                              }

                       }

               } catch (Exception e) {

                       System.out.println("Error Occured : " + e);

               }

        }

       

        /*

         * Users2.xml 파일을 Users.xml 동일한 구조로 생성하여

         * 콘솔에 데이터 출력하고 파일로 생성한다.

         */

        private static void createUsers2XML() {

               try {

                       Document doc = new Document();

                      

                       //루트 엘리먼트 생성

                       Element root = new Element("Users2");

                      

                       //루트에 UserID 엘리먼트 추가

                       Element userID = new Element("UserID");

                       userID.addContent("Nedved");

                       root.addContent(userID);                    

                                            

                       //루트에 Password 엘리먼트 추가

                       Element password = new Element("Password");

                       password.addContent("czech");

                       root.addContent(password);

                      

                       //루트에 Username 엘리먼트 추가

                       Element username = new Element("Username");

                       username.addContent("Pavel Nedved");

                       root.addContent(username);

                      

                       //루트에 Nicknames 하위 Nickname 엘리먼트들 추가

                       Element nickNames = new Element("Nicknames");

                       Element nickName = new Element("Nickname");

                       nickName.addContent("TwoHearts");

                       nickNames.addContent(nickName);

                      

                       nickName = new Element("Nickname");

                       nickName.addContent("Wow");

                       nickNames.addContent(nickName);

                       root.addContent(nickNames);

                      

                       doc.setRootElement(root);

                       XMLOutputter outputter = new XMLOutputter(

Format.getPrettyFormat().setEncoding("UTF-8"));

                      

                       //XML 문서를 문자열로 출력

                       System.out.println(outputter.outputString(doc));

                      

                       //Users2.xml 파일 생성

                       FileOutputStream fos = new FileOutputStream("Users2.xml");

                       OutputStreamWriter os = new OutputStreamWriter(fos, "euc-kr");

                       outputter.output(doc, os);

                       os.close();

               } catch (Exception e) {

                       System.out.println("Error Occured : " + e);

               }

        }

}