XML데이터파싱

개요

XML 파일을 로드 후 XML 데이터를 파싱 하여 구조적인 데이터 형태로 변환 하는 기능을 제공한다. XML 데이터 파싱은 웹서비스(Web Service), 전자문서, 데이터교환과 같은 응용어플리케이션에서 사용할 수 있다.

본 기능은 전자정부 표준프레임워크 공통컴포넌트 요소기술 내에 구성되어 있다.

설명

  ① XML 데이터를 파싱하여 구조적인 데이터 형태로 변환 하는 기능 
관련소스
유형대상소스명설명비고
Serviceegovframework.com.utl.sim.service.EgovXMLDoc.javaXML파싱/조립 요소기술 클래스
JSPWEB_INF/jsp/egovframework/cmm/utl/EgovXMLDoc.jsp테스트 페이지
메소드
결과값메소드명설명내용
booleancreatSchemaToClass(String xml, String ja)클래스생성XML스키마 구조를 읽어 이에 맞는 자바클래스 생성
SndngMailDocumentgetXMLToClass(String file)XML파싱XML파일을 파싱하여 메일발송 클래스(임의)에 내용을 담아 반환
booleangetClassToXML(SndngMailDocument mailDoc, String file)XML조립메일발송(임의) 객체의 데이터를 XML파일로 저장
DocumentgetXMLDocument(String xml)XML파싱XML 파일을 파싱하여 데이터를 조작할 수 있는 Document 객체를 반환
ElementgetRootElement(Document document)ROOT이동Document의 최상의 Element로 이동
ElementinsertElement(Document document, Element rt, String id)노드생성하위에 새로운 Elemenet를 생성
ElementinsertElement(Document document, Element rt, String id, String text)문자열생성하위에 문자열을 가지는 새로운 Elemenet를 생성
TextinsertText(Document document, Element rt, String text)문자열추가하위에 문자열을 추가
ElementgetParentNode(Element current)상위노드반환마지막으로 입력되었거나 참조된 XML Node의 상위 Element를 리턴
booleangetXMLFile(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 체크: 요소기술_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 스키마 파일의 형태
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:import namespace="http://www.w3.org/XML/1998/namespace"
        schemaLocation="http://www.w3.org/2001/xml.xsd" />
  <xs:element name="sndngMail">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="mssageId"		type="xs:string"/>
        <xs:element name="dsptchPerson"		type="xs:string"/>
        <xs:element name="recptnPerson"		type="xs:string"/>
        <xs:element name="sj"			type="xs:string"/>
        <xs:element name="emailCn"		type="xs:string"/>
	<xs:element name="sndngResultCode"	type="xs:string"/>
	<xs:element name="orignlFileList"	type="xs:string"/>
	<xs:element name="streFileList"		type="xs:string"/>
      </xs:sequence>  
    </xs:complexType>
  </xs:element>
</xs:schema>
  • 스키마 파일 컴파일 명령어 실행
scomp -out target.jar source.xsd

source.xsd : 위의 스키마 파일 형태를 갖춘 XML
target.jar : 스키마 컴파일을 통해 생성되는 JAR
-out(src) : JAR 로 생성하는 경우 out 옵션, 소스로 생성하는 경우 src 옵션

  • 데이터를 담는 XML 파일의 형태
<sndngMail>
    <dsptchPerson>example1@example.com</dsptchPerson>
    <recptnPerson>example2@example.com</recptnPerson>
    <sj>테스트 메일 입니다.</sj>
    <emailCn>내용입니다.</emailCn>
    <sndngResultCode>R</sndngResultCode>
</sndngMail>

사용방법

	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() + "<br>";
		resultStr += "2.수신자: " + mailElement.getRecptnPerson() + "<br>";
		resultStr += "3.제목: " + mailElement.getSj() + "<br>";
		resultStr += "4.내용: " + mailElement.getEmailCn() + "<br>";
		resultStr += "5.발신상태: " + mailElement.getSndngResultCode() + "<br>";
	}

XML 스키마 파일을 통해 생성된 JAR 파일을 사용하고자 하는 시스템에 추가한 뒤, 이 클래스를 이용하여 XML 데이터를 파싱하고 조립할 수 있도록 구현하였다. 요소기술 테스트를 위해서 현재 임의로 메일정보를 담는 클래스를 XML스키마를 통하여 생성하였으며 이를 가지고 XML파일을 클래스로, 클래스의 데이터를 XML파일로 조립/파싱함을 보여주도록 구성하였다.

참고자료

 
egovframework/xml데이터파싱.txt · 마지막 수정: 2024/02/05 04:50 (외부 편집기)
 
이 위키의 내용은 다음의 라이센스에 따릅니다 :CC Attribution-Noncommercial-Share Alike 3.0 Unported
전자정부 표준프레임워크 라이센스(바로가기)

전자정부 표준프레임워크 활용의 안정성 보장을 위해 위험성을 지속적으로 모니터링하고 있으나, 오픈소스의 특성상 문제가 발생할 수 있습니다.
전자정부 표준프레임워크는 Apache 2.0 라이선스를 따르고 있는 오픈소스 프로그램입니다. Apache 2.0 라이선스에 따라 표준프레임워크를 활용하여 발생된 업무중단, 컴퓨터 고장 또는 오동작으로 인한 손해 등에 대해서 책임이 없습니다.
Recent changes RSS feed CC Attribution-Noncommercial-Share Alike 3.0 Unported Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki