블로그 이미지
GUCCI

카테고리

전체보기 (111)
여행 (1)
기기 (2)
쇼핑 (0)
게임 (0)
etc. (6)
취업이야기 (0)
업무일지 (5)
리눅스 (38)
웹프로그래밍 (2)
네트워크 (4)
JAVA (17)
Android (0)
IOS (2)
LUA (8)
C/C++ (1)
Objective C (2)
SERVER (2)
그누보드4 (1)
MSSQL (2)
Programming (1)
자바스크립트 (4)
HTML/CSS (1)
LGNAS (0)
Total
Today
Yesterday
IBATIS 는 결과 값을 xml 로 리턴해주는 아주 좋은 기능이 있다. 다만 List 로 받을 경우 따로 파싱해줘야 하는 점이 걸릴뿐이다.

<%=sqlMap.queryForList("select-user-xml", null)%>

위 소스를 브라우저에서 확인하면 각 row 마다 하나의 xml형식으로 완성시켜 배열로 리턴해주게 된다.

++ 참고사이트 : http://naingyo.springnote.com/pages/1495674 iBATIS 가 xml 로 반환해준 값이 라는 부분을 참조하자.
위 결과를 xml 데이터로 사용할 수 없기에 한번더 파싱과정을 거쳐야 한다. 위 사이트도 해결책이 되겠지만, 유동적이지 못한 부분이 걸리는 것 같다. 각 데이터마다 모델에 맞는 처리를 해줘야한다는 것. 그래서 하루종일 이것을 어떻게 하면 간편하게 사용할 수 있을 까? 고민끝에 결과가 나와 소스를 공개한다.

본 소스는 2010/01/05 - [개발센터/JAVA] - 자바 XML 제어 라이브러리 JDOM : JAVA 의 확장 버전이다.


* Xml.java

01./**
02.* @class Xml
03.* @brief Xml Classes
04.*
05.* registered date 20100105
06.* programmed by Seok Kyun. Choi. 최석균
08.*/
09. 
10.package org.syaku.util;
11. 
12.import org.apache.log4j.Logger;
13. 
14.import java.util.*;
15.import java.io.*;
16. 
17.import org.jdom.*;
18.import org.jdom.input.*;
19.import org.jdom.output.*;
20. 
21.import org.syaku.util.*;
22. 
23.public class Xml {
24.private static Logger log = Logger.getLogger(Xml.class);
25. 
26.private SAXBuilder builder = new SAXBuilder();
27. 
28.private String root_node = "data";
29.private String child_node = "item";
30. 
31.// iBATIS
32.public Document iBATISForMake(List result) throws Exception {
33.Element data = new Element(root_node);
34. 
35.for (int i = 0; i < result.size(); i++ ) {
36.Element element = new Element(child_node);
37.String xml = (String)result.get(i);
38.Document document = builder.build(new StringReader(xml));
39. 
40.Element root = document.getRootElement();
41.List child = root.getChildren();
42.for (Iterator iter = child.iterator();iter.hasNext();) {
43.Element node = (Element) iter.next();
44. 
45.String name = (String) node.getName();
46.String value = (String) node.getText();
47.addElement(element,name,value);
48.}
49. 
50.data.addContent(element);
51.}
52. 
53.Document document = new Document(data);
54. 
55.return document;
56.}
57. 
58.// 엘리먼트 생성
59.public Element addElement(Element parent, String name, String value) {
60.Element element = new Element(name);
61.element.setText(value);
62.parent.addContent(element);
63.return parent;
64.}
65. 
66.// 애트리뷰트 생성
67.public void addAttribute(Element element, String name, String value){
68.Attribute attribute = new Attribute(name,value);
69.element.setAttribute(attribute);
70.}
71. 
72. 
73.}

* sqlMap
1.<!--//
2.* @id select-user-xml
3.* @brief 사용자관리 레코드 sub
4.* @return xml
5.//-->
6.<select id="select-user-xml" parameterClass="hashMap" resultClass="xml" xmlResultName="data">
7.생략
8.</select>


* Sample Source
01.<%@ page contentType="text/html; charset=euc-kr" %>
02.<%@ page import="java.util.*" %>
03.<%@ page import="org.jdom.*" %>
04.<%@ page import="org.jdom.output.*" %>
05.<%@ page import="org.syaku.util.*" %>
06. 
07.<%
08.HashMap hm = new HashMap();
09.List result = sqlMap.queryForList("select-user-xml", hm);
10. 
11.Xml xml = new Xml();
12.Document document = (Document) xml.iBATISForMake(result);
13. 
14.XMLOutputter outputter = new XMLOutputter();
15.Format format = Format.getPrettyFormat();
16.format.setEncoding("EUC-KR");
17.outputter.setFormat(format);
18. 
19.response.setContentType("application/xml");
20.outputter.output(document, response.getWriter());
21.%>

* 결과



++ 참고사항
http://www.jdom.org/pipermail/jdom-interest/2001-April/004948.html

출처
http://syaku.tistory.com/trackback/159

'JAVA' 카테고리의 다른 글

중복로그인 체크  (2) 2011.08.12
java 형변환 모음  (1) 2011.04.06
태그 제거 정규식  (2) 2011.03.16
이미지 태그 SRC 경로 추출  (3) 2011.03.16
파일명 추출  (2) 2011.03.16
Posted by GUCCI
, |

최근에 달린 댓글

글 보관함