본문 바로가기

JAVA

JDOM으로 XML 파싱을 해봅시다.


XML 파일 JAVA로 파싱후 JSP 페이지에 보여지기
자바로 XML 을 파싱하기에는 여러가지 방법이 존재하는데, 이번엔 JDOM을 써서 해보겠습니다.

자, 일단 JDOM 이 무엇인지 간략히 살펴 봅시다.

JDOM 이란....?

자바에 최적화된 확장성 생성 언어(XML) 데이터 가공을 위해 만든 개방 소스 라이브러리. 자바 기반의 개발 도구로, 직관적인 방법으로 XML 조작할 있는 개방 소스 응용 프로그램 인터페이스(API)이며, SAX(Simple API for XML) 문서 객체 모델(DOM)과도 상호 연동되고, SAX DOM 장점만을 골라 만든 클래스와 인터페이스를 제공한다. JDOM W3C DOM 유사하지만 DOM 기반으로 설계되거나 DOM 모델로 하지 않은 대안적인 문서 객체 모델로, 차이점은 DOM 언어 중립적으로 설계되었고, 초기에 HTML 페이지의 자바 스크립트 가공에 주로 이용되었던 반면, JDOM 자바 전용으로 설계되어 메소드 오버로딩(method overloading), 컬렉션(collection), 리플렉션(reflection), 친숙한 프로그램밍 환경 자바의 기본 기능들을 활용한다는 있다.


뭐, 대충 이러하다네요... 난 이해려 부족인건가.. 봐도봐도 헷갈려.. ㅠ-ㅠ

일단 여기 들어가서 첨부된 파일을 다운받습니다. http://www.jdom.org/dist/binary/

그리고는 WEB-INF 의 lib 에다가 dom-1.1.1.zip 의 jdom\build 에 가면 jdom.jar 파일을 라이브러리에 추가 시킵니다 ^-^


web.xml
자, 먼저 간단한 xml파일을 하나 만듭니다.

<?xml version="1.0" encoding="euc-kr"?>
<component id="EnviromentAdmin" >
 <bizUnit id="wasInstanceManagement">
  <bizUnitName >elementTest</bizUnitName>
 </bizUnit>
</component>

xml 생성시 쌍이 맞아야 겠지용... -0-
####JDOMSample.java

package com.parse;
import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;

public class JDOMSample{

private static String XML_FILE_DIR =
     "C:/workspace/XMLParsingExam/WebContent/WEB-INF/";
    private static String XML_FILE_NAME =
     "web.xml";

 
    SAXBuilder builder;  // Parser 객체 생성
    Document doc;        // XML문서 전체 나타냄 
    Element root;        // 하나의 태그를 나타냄


// 기본 생성자, Parser를 생성하여 XML문서를 메모리에 읽어 들입니다.
    public JDOMSample(){
        try {
            builder = new SAXBuilder(); // Parser 생성
            doc = builder.build(new File(XML_FILE_DIR,XML_FILE_NAME));
          }catch(Exception e) {
            e.printStackTrace();
        }
/**
     *  XML문서의 내용을 읽어 객체화 합니다.
     *  Hashtable: 키 객체, 값 객체 == XML 태그명, XML 태그 값 매핑
     * @return
     */
    public Hashtable getMailInfo(){
        Hashtable obj = new Hashtable(); // 키 객체, 값 객체
       
        root = doc.getRootElement(); // root component  태그를 산출함
        //System.out.println("component write:"+root);
       
        Element bizUnit=root.getChild("bizUnit");        // 자식 NODE 추출
        Element bizUnitName = bizUnit.getChild("bizUnitName");    // 자식의 자식 NODE 추출
        
        
        data.put("bizUnit", bizUnit.getText());           // NODE 의 값 추출
        data.put("bizUnitName", bizUnitName.getText());   // NODE 의 값 추출
      
        return obj;
    }
}

######View.jsp
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%@ page import="java.util.*" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"  %>
<jsp:useBean id="bean" class="com.parse.JDOMSample"></jsp:useBean>
<%
 Hashtable unit = bean.getMailInfo();
 String bizUnit=(String) unit.get("bizUnit");
 String bizUnitName = (String) unit.get("bizUnitName");
%>

<html>
<head>
 <title>JDOM 을 이용한 xml 분석</title>
</head>
<body>
 <table>
  <tr>
   <td> 첫번째 엘리먼트
   </td>
   <td> <%= bizUnit %> ==>빈 공란이 나오겠지??
   </td>
  </tr>
  <tr>
   <td> 두번째 엘리먼트
   </td>
   <td> <%= bizUnitName %> ==> elementTest 가 찍히겠죠~
   </td>
  </tr>
 </table>
</body>
</html>