XML 파일 JAVA로 파싱후 JSP 페이지에 보여지기
자바로 XML 을 파싱하기에는 여러가지 방법이 존재하는데, 이번엔 JDOM을 써서 해보겠습니다.
자, 일단 JDOM 이 무엇인지 간략히 살펴 봅시다.
JDOM 이란....?
그리고는 WEB-INF 의 lib 에다가 dom-1.1.1.zip 의 jdom\build 에 가면 jdom.jar 파일을 라이브러리에 추가 시킵니다 ^-^
web.xml
자바로 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), 친숙한 프로그램밍 환경 등 자바의 기본 기능들을 활용한다는 데 있다.
뭐, 대충 이러하다네요... 난 이해려 부족인건가.. 봐도봐도 헷갈려.. ㅠ-ㅠ
그리고는 WEB-INF 의 lib 에다가 dom-1.1.1.zip 의 jdom\build 에 가면 jdom.jar 파일을 라이브러리에 추가 시킵니다 ^-^
web.xml
자, 먼저 간단한 xml파일을 하나 만듭니다.
<?xml version="1.0" encoding="euc-kr"?>
xml 생성시 쌍이 맞아야 겠지용... -0-
<?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;
}
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>
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>
'JAVA' 카테고리의 다른 글
[JAVA] POST, GET 방식 확인 (2) | 2010.10.25 |
---|---|
[JAVA] for문의 확대 (0) | 2010.01.18 |
[JAVA] 기본 collection class 종류 (0) | 2010.01.18 |
Oracle DB의 LONG형 타입 받아오기 (0) | 2009.09.09 |
[code TIP] java에서 {{ 와 }} 로 둘러싼 편의적인 코딩작성 (0) | 2009.07.10 |