====== XML데이터파싱 ======
===== 개요 =====
XML 파일을 로드 후 XML 데이터를 파싱 하여 구조적인 데이터 형태로 변환 하는 기능을 제공한다. XML 데이터 파싱은 웹서비스(Web Service), 전자문서, 데이터교환과 같은 응용어플리케이션에서 사용할 수 있다.
본 기능은 전자정부 표준프레임워크 공통컴포넌트 요소기술 내에 구성되어 있다.
===== 설명 =====
① XML 데이터를 파싱하여 구조적인 데이터 형태로 변환 하는 기능
== 관련소스 ==
^유형^대상소스명^설명^비고^
|Service|egovframework.com.utl.sim.service.EgovXMLDoc.java|XML파싱/조립 요소기술 클래스| |
|JSP|WEB_INF/jsp/egovframework/cmm/utl/EgovXMLDoc.jsp|테스트 페이지| |
== 메소드 ==
^결과값^메소드명^설명^내용^
|boolean|creatSchemaToClass(String xml, String ja)|클래스생성|XML스키마 구조를 읽어 이에 맞는 자바클래스 생성|
|SndngMailDocument|getXMLToClass(String file)|XML파싱|XML파일을 파싱하여 메일발송 클래스(임의)에 내용을 담아 반환|
|boolean|getClassToXML(SndngMailDocument mailDoc, String file)|XML조립|메일발송(임의) 객체의 데이터를 XML파일로 저장|
|Document|getXMLDocument(String xml)|XML파싱|XML 파일을 파싱하여 데이터를 조작할 수 있는 Document 객체를 반환|
|Element|getRootElement(Document document)|ROOT이동|Document의 최상의 Element로 이동|
|Element|insertElement(Document document, Element rt, String id)|노드생성|하위에 새로운 Elemenet를 생성|
|Element|insertElement(Document document, Element rt, String id, String text)|문자열생성|하위에 문자열을 가지는 새로운 Elemenet를 생성|
|Text|insertText(Document document, Element rt, String text)|문자열추가|하위에 문자열을 추가|
|Element|getParentNode(Element current)|상위노드반환|마지막으로 입력되었거나 참조된 XML Node의 상위 Element를 리턴|
|boolean|getXMLFile(Document document, String file)|XML조립|Document 객체를 XML파일로 저장|
== Input ==
* XML스키마 파일: String 타입의 절대경로를 포함한 XML스키마 파일명 (예, /user/com/test/mail.xsd)
* 생성 JAR 경로: String 타입의 절대경로를 포함한 JAR 파일명 (예, /user/com/test/mail.jar)
* XML데이터 파일: String 타입의 절대경로를 포함한 XML데이터 파일명 (예, /user/com/test/mail_data.xml)
* Validation 체크: [[egovframework:요소기술_validation_체크]]
== Output ==
* Boolean 타입 true / false
===== 환경설정 =====
* 스키마 컴파일을 위한 xmlbeans 라이브러리 다운로드
https://xmlbeans.apache.org/index.html (소개)
https://xmlbeans.apache.org/download/index.html (다운로드)
* 스키마 컴파일을 위한 시스템변수 및 PATH 설정
(윈도우 명령어 실행창에서)
set XMLBEANS_HOME=C:\xmlbeans-2.0.0
set XMLBEANS_LIB=%XMLBEANS_HOME%\lib
set JAVA_HOME=C:\Progra~1\Java\jdk1.5.0
set PATH=%XMLBEANS_HOME%\bin;%JAVA_HOME%\bin;
* 자바클래스 생성을 위한 XML 스키마 파일의 형태
* 스키마 파일 컴파일 명령어 실행
scomp -out target.jar source.xsd
source.xsd : 위의 스키마 파일 형태를 갖춘 XML \\
target.jar : 스키마 컴파일을 통해 생성되는 JAR \\
-out(src) : JAR 로 생성하는 경우 out 옵션, 소스로 생성하는 경우 src 옵션 \\
* 데이터를 담는 XML 파일의 형태
example1@example.com
example2@example.com
테스트 메일 입니다.
내용입니다.
R
===== 사용방법 =====
import egovframework.com.utl.sim.service.EgovXMLDoc;
// 스키마 파일을 읽어 자바 클래스 생성
// 결과물은 스키마 구조와 일치하는 클래스가 생성된 jar 파일
String file = request.getParameter("file");
String jar = request.getParameter("jar");
boolean result = false;
if (file != null && file.length() > 0
&& jar != null && jar.length() > 0) {
result = EgovXMLDoc.creatSchemaToClass(file, jar);
}
// 메일정보를 담은 XML파일의 데이터를 읽어 메일 객체로 파싱한다.
String file = request.getParameter("file");
String resultStr = "";
if (file != null && file.length() > 0) {
SndngMailDocument mailDoc = EgovXMLDoc.getXMLToClass(file);
SndngMailDocument.SndngMail mailElement = mailDoc.getSndngMail();
resultStr += "1.발신자: " + mailElement.getDsptchPerson() + "
";
resultStr += "2.수신자: " + mailElement.getRecptnPerson() + "
";
resultStr += "3.제목: " + mailElement.getSj() + "
";
resultStr += "4.내용: " + mailElement.getEmailCn() + "
";
resultStr += "5.발신상태: " + mailElement.getSndngResultCode() + "
";
}
XML 스키마 파일을 통해 생성된 JAR 파일을 사용하고자 하는 시스템에 추가한 뒤, 이 클래스를 이용하여 XML 데이터를 파싱하고 조립할 수 있도록 구현하였다.
요소기술 테스트를 위해서 현재 임의로 메일정보를 담는 클래스를 XML스키마를 통하여 생성하였으며 이를 가지고 XML파일을 클래스로, 클래스의 데이터를 XML파일로 조립/파싱함을 보여주도록 구성하였다.
===== 참고자료 =====
* XML Beans 참조: [[egovframework:rte:fdl:marshalling_unmarshalling]]