KR20180083089A - WOT(Web Of Things) 기기용 XML파서 - Google Patents
WOT(Web Of Things) 기기용 XML파서 Download PDFInfo
- Publication number
- KR20180083089A KR20180083089A KR1020170004994A KR20170004994A KR20180083089A KR 20180083089 A KR20180083089 A KR 20180083089A KR 1020170004994 A KR1020170004994 A KR 1020170004994A KR 20170004994 A KR20170004994 A KR 20170004994A KR 20180083089 A KR20180083089 A KR 20180083089A
- Authority
- KR
- South Korea
- Prior art keywords
- xml
- module
- code
- processing
- parser
- Prior art date
Links
Images
Classifications
-
- G06F17/2705—
Landscapes
- Document Processing Apparatus (AREA)
Abstract
본 발명은 마크업언어의 파서에 관한 것으로, 보다 상세하게는 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과, SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈을 포함하고, 상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈; 분리된 코드의 요소를 저장하는 요소저장모듈; 및 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈;을 포함하여 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하여 XML코드를 처리하거나, 또는 XML코드를 분리하는 코드분리모듈; 분리된 코드의 요소를 저장하는 요소저장모듈; 및 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈;을 포함하여 분리된 각 요소를 계층화하여 XML코드를 처리하고, 상기 XML파싱모듈은 C언어로 구현됨으로써, WOT 기기상에서 다양한 XML코드의 처리환경을 제공하고 XML코드 처리를 위해 필요한 시간과 공간을 절약하는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
Description
본 발명은 마크업 언어의 파서에 관한 것으로, 보다 상세하게는 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과, SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈을 포함하고, 상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈; 분리된 코드의 요소를 저장하는 요소저장모듈; 및 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈;을 포함하여 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하여 XML코드를 처리하거나, 또는 XML코드를 분리하는 코드분리모듈; 분리된 코드의 요소를 저장하는 요소저장모듈; 및 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈;을 포함하여 분리된 각 요소를 계층화하여 XML코드를 처리하고, 상기 XML파싱모듈은 C언어로 구현됨으로써, WOT 기기 상에서 다양한 XML코드의 처리환경을 제공하고 XML코드 처리를 위해 필요한 시간과 공간을 절약하는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
XML은 eXtensible MarkUp Language의 약자로 확장가능한 마크업 언어라는 의미의 용어이며, 인터넷에 연결된 시스템끼리 데이터를 쉽게 주고 받을 수 있게 하여 HTML의 한계를 극복할 목적으로 만들어졌다. 통상적으로 통신을 수행하는 두 주체 이를테면 클라이언트와 서버는 여러 종류의 데이터를 주고 받게 되는데, XML은 이러한 데이터를 구조화시켜 포장하는 방법을 제시한다. 따라서 XML코드로 전송받은 데이터를 분석하고 활용하기 위해서 XML코드를 해석해서 데이터를 추출해내야 하는데, XML파서가 이 기능을 담당한다.
최근 WOT(Web Of Things), 더 나아가서는 WoT(Web of Things) 등 이종의 기기간에 무선망을 사용해 데이터 통신을 수행하는 WOT 기기들이 급속도로 발전함에 따라 이들 이종의 기기들 사이 혹은 개별 기기와 서버 간의 XML코드 전송처리가 문제되고 있는데, 특히 서버, 클라이언트의 파서 제공 환경이 서로 다름으로 인해 스마트폰 등에서 웹서비스 서버가 제공하는 완전한 서비스를 받지 못하는 경우가 자주 발생한다. 이러한 상황에서 WOT 기기를 위한 확장 XML파서의 필요성이 대두되고 있다.
또한, WOT 기기는 데스크탑PC나 랩탑컴퓨터에 비해 하드웨어 성능이 떨어지므로 하드웨어성능을 고려하지 않은 파서의 경우에는 대용량 XML데이터 처리가 탁월하지 못해 완전한 웹서비스를 제공받기가 힘들다. 특히, 자바스크립트로 작성된 XML파서의 경우 스크립트를 실행하면서 바로 해석을 하게 되므로 스크립트 해석기에 의존적인 성능을 나타낼 뿐 아니라, 가비지콜렉터(Garbage Collector)를 통해 사용하지 않는 메모리를 가용메모리 자원으로 전환하는 구조를 취하므로 메모리의 효율적인 사용이 힘든 문제가 있는바, 한정된 자원을 이용해야만 하는 WOT 기기에는 적합하지 않다.
본 발명은 상기와 같은 문제점을 해결하기 위해 안출된 것으로,
본 발명의 목적은 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과, SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈을 포함하여, WOT 기기상에서 다양한 XML코드의 처리환경을 제공하는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
본 발명의 다른 목적은 상기 XML파싱모듈은 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하여 XML코드를 처리하여, 문서의 용량이 작거나 문서의 유효성 검사나 데이터변환과 같이 별도의 메모리가 필요없는 작업의 경우 빠른 처리속도를 보장받을 수 있는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
본 발명의 또 다른 목적은 상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈과, 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈을 포함하여, 문서의 용량이 작거나 문서의 유효성 검사나 데이터변환과 같이 별도의 메모리가 필요없는 작업의 경우 빠른 처리속도를 보장받을 수 있는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
본 발명의 또 다른 목적은 상기 XML파싱모듈은 분리된 각 요소를 계층화하여 XML코드를 처리하여, XML문서가 구조적으로 작성되었거나 원하는 데이터가 계층구조를 갖는 경우 많은 양의 데이터처리가 요구되는 경우에 빠른 처리속도를 기대할 수 있고, 데이터의 이동이 탁월해지는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
본 발명의 또 다른 목적은 상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈과, 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈을 포함하여, XML문서가 구조적으로 작성되었거나 원하는 데이터가 계층구조를 갖는 경우 많은 양의 데이터처리가 요구되는 경우에 빠른 처리속도를 기대할 수 있고, 데이터의 이동이 탁월해지는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
본 발명의 또 다른 목적은 상기 XML파싱모듈은 C언어로 구현됨으로써 스크립트 해석기의 성능과 무관하게 안정적인 고성능 확보가 가능해지고, C언어에 의해 사용하지 않는 메모리를 즉시 해제(free)시켜줌으로써 가용 메모리자원을 충분히 확보하는 것이 가능해 응용프로그램의 공간복잡도를 떨어뜨려 프로그램의 수행시간을 향상시키는 것을 특징으로 하는 WOT 기기용 확장 XML파서에 관한 것이다.
상술한 본 발명의 목적을 달성하기 위한 WOT 기기용 XML파서는 다음과 같은 구성을 포함한다.
본 발명의 일 실시예에 따르면, 본 발명에 따른 WOT 기기용 확장 XML파서는 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과; SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈;을 포함하고, 상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈을 포함하여, WOT 기기상에서 다양한 XML코드의 처리환경을 제공하는 것을 특징으로 한다.
본 발명의 다른 실시예에 따르면, 본 발명에 따른 WOT 기기용 확장 XML파서에 있어서 상기 XML파싱모듈은 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈을 더 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 WOT 기기용 확장 XML파서에 있어서 상기 XML파싱모듈은 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈을 더 포함하는 것을 특징으로 한다.
본 발명의 또 다른 실시예에 따르면, 본 발명에 따른 WOT 기기용 확장 XML파서에 있어서 상기 XML파싱모듈은 C언어로 구현됨으로써 XML코드 처리를 위해 필요한 시간과 공간을 절약하는 것을 특징으로 한다.
본 발명은 앞서 본 실시예와 하기에 설명할 구성과 결합, 사용관계에 의해 다음과 같은 효과를 얻을 수 있다.
본 발명은 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과, SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈을 포함하여, WOT 기기상에서 다양한 XML코드의 처리환경을 제공하는 효과를 갖는다.
본 발명은 상기 XML파싱모듈이 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하여 XML코드를 처리하여, 문서의 용량이 작거나 문서의 유효성 검사나 데이터변환과 같이 별도의 메모리가 필요없는 작업의 경우 빠른 처리속도를 보장받을 수 있는 효과를 갖는다.
본 발명은 상기 XML파싱모듈이 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈과, 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈을 포함하여, 문서의 용량이 작거나 문서의 유효성 검사나 데이터변환과 같이 별도의 메모리가 필요없는 작업의 경우 빠른 처리속도를 보장받을 수 있는 효과를 갖는다.
본 발명은 상기 XML파싱모듈이 분리된 각 요소를 계층화하여 XML코드를 처리하여, XML문서가 구조적으로 작성되었거나 원하는 데이터가 계층구조를 갖는 경우 많은 양의 데이터처리가 요구되는 경우에 빠른 처리속도를 기대할 수 있고, 데이터의 이동이 탁월해지는 효과를 갖는다.
본 발명은 상기 XML파싱모듈이 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈과, 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈을 포함하여, XML문서가 구조적으로 작성되었거나 원하는 데이터가 계층구조를 갖는 경우 많은 양의 데이터처리가 요구되는 경우에 빠른 처리속도를 기대할 수 있고, 데이터의 이동이 탁월해지는 효과를 갖는다.
본 발명은 상기 XML파싱모듈이 C언어로 구현됨으로써 스크립트 해석기의 성능과 무관하게 안정적인 고성능 확보가 가능해지고, C언어에 의해 사용하지 않는 메모리를 즉시 해제(free)시켜줌으로써 가용 메모리자원을 충분히 확보하는 것이 가능해 응용프로그램의 공간복잡도를 떨어뜨려 프로그램의 수행시간을 향상시키는 효과를 갖는다.
도 1은 본 발명의 일 실시예에 따른 WOT 기기용 확장 XML파서의 블록도.
도 2는 본 발명의 확장 XML파서에서의 일 실시예에 따른 XML파싱모듈의 순서도.
도 3은 본 발명의 확장 XML파서에서의 다른 실시예에 따른 XML파싱모듈의 순서도.
도 4는 본 발명에 따른 WOT 기기용 확장 XML파서를 이용한 어플리케이션 개발툴과 에뮬레이터의 개념도.
도 5는 본 발명의 일 실시예에 따른 WOT 기기용 RSS파서의 블록도.
도 6은 본 발명의 RSS파서에서의 RSS파싱모듈의 순서도.
도 7은 본 발명에 따른 WOT 기기용 RSS파서를 이용한 어플리케이션 개발툴과 에뮬레이터의 개념도.
도 2는 본 발명의 확장 XML파서에서의 일 실시예에 따른 XML파싱모듈의 순서도.
도 3은 본 발명의 확장 XML파서에서의 다른 실시예에 따른 XML파싱모듈의 순서도.
도 4는 본 발명에 따른 WOT 기기용 확장 XML파서를 이용한 어플리케이션 개발툴과 에뮬레이터의 개념도.
도 5는 본 발명의 일 실시예에 따른 WOT 기기용 RSS파서의 블록도.
도 6은 본 발명의 RSS파서에서의 RSS파싱모듈의 순서도.
도 7은 본 발명에 따른 WOT 기기용 RSS파서를 이용한 어플리케이션 개발툴과 에뮬레이터의 개념도.
이하에서는 본 발명에 따른 WOT 기기용 확장 XML 파서의 바람직한 실시예들을 첨부된 도면을 참조하여 상세히 설명한다. 하기에서 본 발명을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하도록 한다. 특별한 정의가 없는 한 본 명세서의 모든 용어는 본 발명이 속하는 기술분야의 통상의 지식을 가진 기술자가 이해하는 당해 용어의 일반적 의미와 동일하고 만약 본 명세서에서 사용된 용어의 의미와 충돌하는 경우에는 본 명세서에서 사용된 정의에 따른다.
본 명세서에서 파싱이란 주어진 문서를 분석하여 문서 내의 필요한 데이터를 추출하여 제공하거나 추출한 데이터를 가공하여 제공하는 작업으로 정의하고, 파서란 그와 같은 작업을 수행하는 모듈이나 장치로 정의한다.
도 1 내지 4를 참조하면, 본 발명의 일 실시예에 따른 WOT 기기용 확장 XML파서(1)는 XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈(11)과, SOAP 또는 WSDL프로토콜에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈(12)을 포함할 수 있다. 또한, RSS프로토콜에 따라 작성된 XML코드를 해석하여 처리하는 RSS모듈(13)을 더 포함할 수 있다.
상기 XML파싱모듈(11)은 XML코드를 각 요소로 분리하여 처리하는 구성으로, 보다 상세하게 설명하면, XML코드로 작성된 문서를 읽어 텍스트 데이터를 추출해내는 역할을 수행한다. XML은 유무선 통신망을 통해 서로 다른 기기 사이에 텍스트 정보교환을 위한 마크업언어이다. 서버와 클라이언트 사이에 통신을 수행하면서 텍스트 정보를 교환하는 경우 정보를 보내는 쪽은 텍스트 정보를 XML코드로 구조화하여 전송하므로 정보를 받는 쪽은 전송받은 XML코드에서 필요한 정보부분만을 추출해야 하는데, XML파싱모듈(11)이 바로 이런 기능을 담당한다.
XML파싱은 다양한 기법으로 가능한데, 본 발명의 일 실시예에서 상기 XML파싱모듈(11)은 분리된 각 요소(element)에 이벤트가 발생하는 경우 이벤트를 처리하여 XML코드를 처리하는 것을 특징으로 한다. 이 경우, 도 2에 도시된 바와 같이 클라이언트가 XML코드로 작성된 문서를 전송받아 XML파싱모듈(11)이 파싱을 하면서 각 이벤트를 처리해주게 된다. 이를 위해 상기 XML파싱모듈(11)은 XML코드를 분리하는 코드분리모듈(110)과, 분리된 코드의 요소를 저장하는 요소저장모듈(111)과, 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈(112)을 포함할 수 있다.
서버로부터 XML문서가 전송된 경우 상기 코드분리모듈(110)이 XML코드를 분리하고(S101), 문서의 시작 이벤트가 발생하면, 이벤트처리모듈(112)이 문서시작 이벤트 처리를 통해 문서의 파싱이 시작되었음을 인식한다(S102). 주석문 이벤트가 발생한 경우 주석문은 실질적으로 필요한 데이터가 아닌 경우가 많으므로 이벤트처리모듈(112)은 이를 별도의 공간에 저장하거나 무시한다(S103). 주석문의 이벤트는 주석문의 시작을 알리는 태그를 통해 인지하며, 이벤트처리모듈(112)이 주석문을 무시하는 경우 주석문의 끝을 알리는 태그를 만날 때까지 코드분리를 계속한다. 요소 시작을 알리는 이벤트가 발생된 경우, 요소 종료를 알리는 태그를 만날 때까지 파싱을 계속하면서 요소저장모듈(111)이 데이터를 저장한다(S104, S105). 상기 작업들은 파싱을 계속하면서 문서의 끝을 알리는 이벤트가 발생할 때까지 지속된다(S106). 바람직한 실시예로 상기 XML파싱모듈(11)은 수집된 데이터가 설계자가 미리 설정해놓은 데이터 형식에 따르는지 검사하는 기능을 포함할 수 있다. 예를 들면, 주민등록번호 앞자리의 데이터 값을 전송받았는데, 수집된 데이터는 7자리 숫자를 갖는 경우, XML파싱모듈(11)의 파싱작업에 오류가 없는 이상 전송받은 데이터에 오류가 있음을 알 수 있다. 이 경우 확장 XML파서(1)를 포함하는 전체시스템(예를 들면, 클라이언트에 설치된 사용자 응용프로그램(2)일 수 있다.)의 에러처리모듈(미도시)이 추가로 필요할 수 있다. 상기와 같이 이벤트를 발생시켜 처리하는 경우 전체 문서의 부분에 대해서 이벤트가 발생할 때마다 처리해주므로, 문서 전체를 메모리에 올려놓고 작업할 필요가 없게 되므로 처리속도가 빠르게 된다. 그러나, 문서의 양이 많아지면 상기와 같은 라인 단위의 처리는 오히려 문서 전체의 처리시간을 지연시키는 문제가 있으므로, 결과적으로 이 방법은 문서의 용량이 작은 경우에 적절한 기법이 된다. 또한, 문서의 유효성 검사나 데이터변환과 같이 별도의 메모리가 필요없는 작업의 경우 활용도가 높을 것이다.
본 발명의 다른 실시예에서 상기 XML파싱모듈(11)은 분리된 각 요소를 계층화하여 XML코드를 처리하는 것을 특징으로 한다. 이 경우, 도 3에 도시된 바와 같이 코드분리를 통해 추출한 데이터를 노드로 생성하여 트리구조를 생성한다. 이를 위해 상기 XML파싱모듈(11)은 XML코드를 분리하는 코드분리모듈(110)과, 분리된 코드의 요소를 저장하는 요소저장모듈(111)과, 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈(113)을 포함할 수 있다.
도 3을 참조하면, 코드분리모듈(110)에 의해 전송된 XML문서가 파싱이 시작되면(S201), 문서의 시작태그를 인식하고 노드생성모듈(113)이 루트(ROOT)노드를 생성한다(S202). 루트노드는 언제든지 전체 데이터에 접근이 가능한 데이터의 접근 통로를 제공하며, 계층화된 데이터의 최상단에 위치한다. 주석문 이벤트가 발생한 경우, 주석문은 실질적으로 필요한 데이터가 아닌 경우가 많으므로 앞서와 마찬가지로 이벤트처리모듈(112)은 이를 별도의 공간에 저장하거나 무시한다(S203). 요소시작을 알리는 태그를 인식한 경우 노드생성모듈(113)은 루트노드 또는 부모노드에 대한 자식노드를 생성한다(S204). 그리고, 파싱이 이루어지면 요소를 생성된 노드에 저장하기 시작하며, 이 작업은 요소가 종료될 때까지 계속된다(S205). 설계자가 원하는 데이터 형식에 따라 루트(ROOT)노드는 복수 개가 생성될 수 있고, 트리의 깊이도 각각 달리 설정될 수 있다. 이 과정에서 데이터의 양에 따라 노드를 접근하기 위한 다양한 계층화 알고리즘이 활용될 수 있다. 상기와 같은 계층화기법은 XML문서가 구조적으로 작성되었거나 원하는 데이터가 계층구조를 갖는 경우 바람직할 것이다. 이런 대부분은 많은 양의 데이터처리가 요구되는 경우일 것이다. 그리고, 특정 데이터를 접근하기 위해 루트의 주소만 알면 되므로 데이터의 이동이 탁월하다는 장점이 있다.
본 발명의 보다 바람직한 실시예로, 상기 XML파싱모듈(11)은 C언어로 구현됨으로써 XML코드 처리를 위해 필요한 시간과 공간을 절약할 수 있다. WOT 기기용 클라이언트 프로그램은 전술한 확장 XML파서(1)를 통해 서버로부터 전송받은 XML문서를 처리하도록 설계될 수 있다. 근래에 웹서비스를 위한 응용프로그램(2)의 대부분이 자바스크립트 언어로 작성되는데, 이 경우 응용프로그램(2)에 사용되는 확장 XML파서(1) 역시 상기와 같은 웹프로그래밍 언어에 기반한 경우가 많다. 그러나, 자바스크립트는 인터프리터 기반의 언어로서 스크립트를 실행하면서 바로 해석을 하게 되므로 스크립트 해석기에 의존적인 성능을 나타낸다. 본 발명은 상기 XML파싱모듈(11)을 C언어로 작성하고 자바스크립트나 기타 언어로 작성된 응용프로그램(2)에서 실행모듈을 바인딩함으로써 스크립트의 성능과 무관하게 안정적인 고성능 확보가 가능해진다.
상기와 같이 실행모듈을 바인딩하는 기법의 예로 ActiveX를 활용할 수 있다. 예를 들면, C언어로 작성된 실행파일을 웹브라우저에서 구동시킬 수 있는데, C언어로 작성한 실행파일을 DLL파일로 변환하고 CAB파일로 패키지화한다. 즉, DLL 파일과 이에 대한 접근 관련 설정파일(.inf), 기타 ocx파일(.ocx) 등을 CAB파일로 감싸고 인증하는데, 응용프로그램(2) 내에서 CAB파일을 특수 태그로(예를 들면, HTML에서는 object 태그) 링크를 걸어, 자바스크립트에서 DLL을 로드하고, DLL내에 정의되어 있는 C함수를 접근할 수 있다. 이러한 작업을 래핑(Wrapping)이라고 한다.
또한, 자바스크립트의 경우 가비지콜렉터(Garbage Collector)를 통해 사용하지 않는 메모리를 가용메모리 자원으로 전환하는 구조를 취하므로 메모리의 효율적인 사용이 힘든 반면, C언어는 사용하지 않는 메모리를 즉시 해제(free)시켜줌으로써 가용 메모리자원을 충분히 확보하는 것이 가능해 응용프로그램(2)의 공간복잡도를 떨어뜨리게 된다. 이는 결국 프로그램의 수행시간과 연결된다.
실제로 본 발명자의 실험결과에 따르면 C언어로 구현된 확장 XML파서(1)의 경우 이벤트 처리를 통해 파싱을 수행한 경우 64KB용량을 10초 이내에 처리가 가능했고, 분리한 요소를 계층화시켜 파싱을 수행한 경우 64KB용량을 15초 이내에 처리가 가능했다. 이는 자바스크립트를 이용한 경우와 비교하여 평균 1초 이상 빠른 것으로 본 발명이 대용량 데이터를 처리하는데 탁월함을 증명하는 것이다.
상기 SOAP/WSDL모듈(12)은 SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 구성으로, 서버로부터 SOAP 또는 WSDL를 따르는 XML코드를 수신받은 경우 SOAP 또는 WSDL에 따라 이를 파싱하여 처리하는 역할을 수행한다.
SOAP는 Simple Object Access Protocol의 약자로, XML과 HTTP 통신을 기반으로 하여 네트워크상에 존재하는 각종 컴포넌트 간의 호출을 효율적으로 실현하기 위한 방법을 제시하는 규약이다. 본 발명에 따른 WOT 기기용 확장 XML파서(1)는 상기 SOAP에 따라 작성된 XML코드를 수신하여 처리할 수 있는 SOAP/WSDL모듈(12)을 포함함으로써 WOT 기기상에서 다양한 XML코드의 처리환경을 제공하게 된다.
또한, WSDL은 Web Services Description Language의 약자로, 특정 비지니스가 제공하는 서비스를 설명하고 개인이나 다른 회사들이 그러한 서비스에 전자적으로 접근할 수 있는 방법을 제공하기 위해 사용되는 XML 기반의 마크업 언어이다. 본 발명에 따른 WOT 기기용 확장 XML파서(1)는 상기 WSDL에 따라 작성된 XML코드를 수신하여 처리할 수 있는 SOAP/WSDL모듈(12)을 포함함으로써 WOT 기기상에서 다양한 XML코드의 처리환경을 제공하게 된다.
상기 RSS모듈(13)은 RSS프로토콜에 따라 작성된 XML코드를 해석하여 처리하는 구성으로, 서버로부터 RSS프로토콜을 따르는 XML코드를 수신받은 경우 RSS프로토콜에 따라 이를 파싱하여 처리하는 역할을 수행한다.
RSS는 Really Simple Syndication의 약자로 웹사이트나 블로그에 의해 사용되는 웹신디케이션을 위한 XML 프로토콜이다. 즉, RSS는 빈번하게 바뀌거나 업데이트 되는 컨텐츠(데이터, 정보)를 제공하는 개별 사이트를 매번 찾아가지 않고 자신의 블로그나 뷰어 상에서 신속하고 간편하게 받아볼 수 있는 서비스를 제공한다. 본 발명은 상기와 같이 RSS프로토콜로 작성된 XML코드를 해석하여 제공하거나 또는 가공하여 제공할 수 있는 RSS모듈(13)을 추가로 포함함으로써, WOT 기기상에서 다양한 XML코드의 처리환경을 제공하게 된다.
본 발명의 또 다른 실시예에서는, 상기 확장 XML파서(1)를 라이브러리(3)로 제공하는 WOT 기기용 어플리케이션 개발툴(4)이 제공된다(도 1 및 4 참조). 스마트폰과 같은 WOT 기기용 응용프로그램(2)을 개발하기 위해서 다양한 프로그래밍 언어와 라이브러리(3)를 제공할 필요가 있는데, 본 발명은 전술한 확장 XML파서(1)를 API(3)로 제공함으로써 WOT 기기를 위한 응용프로그램(2) 개발을 위한 다양한 XML코드 처리를 위한 API(3)를 제공할 뿐 아니라, 전술한 바와 같이 파서의 처리속도와 효율을 높임으로써 고성능 확장 XML파서 API(3)를 제공할 수 있게 된다.
또한, 상기 어플리케이션 개발툴(4)로 개발된 응용프로그램(2)이 WOT 기기상에서 제대로 구동하는지 확인할 수 있는 에뮬레이터(5)를 추가로 제공한다. 상기 에뮬레이터(5)는 WOT 기기에 사용되는 OS와 하드웨어의 특성을 반영하여 동일한 실행환경을 제공한다.
결과적으로, 본 발명은 한정된 메모리와 자원을 활용해야만 하는 스마트폰과 같은 WOT 기기에 최적의 프레임워크(framework)를 제공하게 된다.
도 5 내지 7을 참조하면, 본 발명의 또 다른 실시예에 따른 WOT 기기용 범용 RSS파서(6)는 RSS 엘리먼트를 각 요소로 분리하여 처리하는 RSS파싱모듈(61)과, SOAP프로토콜에 따라 작성된 XML코드를 해석하여 처리하는 SOAP모듈(62)을 포함할 수 있다. 또한, JSON코드로 작성된 문서를 해석하여 처리하는 JSON모듈(63)을 더 포함할 수 있다.
상기 RSS파싱모듈(61)은 RSS프로토콜에 따라 작성된 XML코드를 해석하여 처리하는 구성으로 특히, 본 발명에서 상기 RSS파싱모듈(61)은 RSS 엘리먼트를 각 요소로 분리하여 처리하는 것을 특징으로 한다. 앞서 설명한 바와 같이, RSS(Really Simple Syndication)는 웹사이트나 블로그 등에 사용되는 웹신디케이션을 위한 프로토콜로, 웹사이트 등에서 콘텐츠를 규격화된 문서로 제작하여 배포하면 사용자가 배포한 문서를 수집하여 원하는 콘텐츠만을 확인할 수 있도록 하는 문서 규격이다. RSS로 제작된 문서에는 XML 선언문과 RSS 엘리먼트를 포함하게 되는데, RSS 엘리먼트에는 RSS 버전 정보를 나타내는 'version' 에트리뷰트와, 웹사이트의 메타 정보들을 포함하는 channel(채널) 엘리먼트를 포함하며, channel 엘리먼트는 20 여종의 하부 엘리먼트(title, link, description 엘리먼트는 필수로 포함되며, 웹사이트의 콘텐츠 정보를 포함하는 item 엘리먼트는 선택적으로 포함될 수 있다)를 포함하게 된다. 따라서, RSS의 규격에 맞게 제작되어 배포되는 문서(즉, RSS프로토콜에 따라 작성된 XML코드)에서 원하는 콘텐츠만을 추출하여 확인하기 위해서는 RSS프로토콜에 따라 이를 파싱하여 처리하여야 하는데 특히, 본 발명에서 상기 RSS파싱모듈(61)은 RSS 엘리먼트를 각 요소로 분리하여 처리하게 된다. 이를 위해 상기 RSS파싱모듈(61)은 RSS 엘리먼트를 분리하는 엘리먼트분리모듈(611)과, 분리된 엘리먼트의 요소를 저장하는 요소저장모듈(612)을 포함할 수 있다.
상기 엘리먼트분리모듈(611)은 RSS프로토콜에 따라 작성된 문서에서 RSS 엘리먼트를 분리한다(S301). 도 6을 참조하면, 상기 엘리먼트분리모듈(611)은 RSS프로토콜에 따라 작성된 문서에서 RSS 엘리먼트를 RSS 버전 정보를 나타내는 'version' 에트리뷰트, title 엘리먼트, link 엘리먼트, description 엘리먼트, 웹사이트의 콘텐츠 정보를 포함하는 item 엘리먼트 등으로 분리하게 되고, 상기 엘리먼트분리모듈(611)의 분리가 계속되는 동안 상기 요소저장모듈(612)에 의해 각 엘리먼트 요소가 저장되게 된다(S303 ~ S307). 이와 같이, 상기 RSS파싱모듈(61)은 RSS 엘리먼트를 분리하고 분리된 엘리먼트의 요소를 저장하여 처리함으로써 RSS프로토콜에 따라 작성된 문서를 신속하게 해석하여 처리할 수 있게 된다.
본 발명의 보다 바람직한 실시예로, 상기 RSS파싱모듈(61)은 C언어로 구현됨으로써 RSS프로토콜에 따른 문서의 처리를 위해 필요한 시간과 공간을 절약할 수 있다. WOT 기기용 클라이언트 프로그램은 전술한 RSS파서(6)를 통해 서버로부터 전송받은 RSS 문서를 처리하도록 설계될 수 있다. 근래에 웹서비스를 위한 응용프로그램(2)의 대부분이 자바스크립트 언어로 작성되는데, 이 경우 응용프로그램(2)에 사용되는 RSS파서(6) 역시 상기와 같은 웹프로그래밍 언어에 기반한 경우가 많다. 그러나, 자바스크립트는 인터프리터 기반의 언어로서 스크립트를 실행하면서 바로 해석을 하게 되므로 스크립트 해석기에 의존적인 성능을 나타낸다. 본 발명은 RSS파싱모듈(61)을 C언어로 작성하고 자바스크립트나 기타 언어로 작성된 응용프로그램(2)에서 실행모듈을 바인딩함으로써 스크립트의 성능과 무관하게 안정적인 고성능 확보가 가능해진다.
상기와 같이 실행모듈을 바인딩하는 기법의 예로 ActiveX를 활용할 수 있다. 예를 들면, C언어로 작성된 실행파일을 웹브라우저에서 구동시킬 수 있는데, C언어로 작성한 실행파일을 DLL파일로 변환하고 CAB파일로 패키지화한다. 즉, DLL 파일과 이에 대한 접근 관련 설정파일(.inf), 기타 ocx파일(.ocx) 등을 CAB파일로 감싸고 인증하는데, 응용프로그램(2) 내에서 CAB파일을 특수 태그로(예를 들면, HTML에서는 object 태그) 링크를 걸어, 자바스크립트에서 DLL을 로드하고, DLL내에 정의되어 있는 C함수를 접근할 수 있다. 이러한 작업을 래핑(Wrapping)이라고 한다.
또한, 자바스크립트의 경우 가비지콜렉터(Garbage Collector)를 통해 사용하지 않는 메모리를 가용메모리 자원으로 전환하는 구조를 취하므로 메모리의 효율적인 사용이 힘든 반면, C언어는 사용하지 않는 메모리를 즉시 해제(free)시켜줌으로써 가용 메모리자원을 충분히 확보하는 것이 가능해 응용프로그램(2)의 공간복잡도를 떨어뜨리게 된다. 이는 결국 프로그램의 수행시간과 연결된다.
실제로 본 발명자의 실험결과에 따르면 C언어로 구현된 RSS파서(6)의 경우 64KB용량을 7초 이내에 처리가 가능했다. 이는 자바스크립트를 이용한 경우와 비교하여 평균 1초 이상 빠른 것으로 본 발명이 대용량 데이터를 처리하는데 탁월함을 증명하는 것이다.
상기 SOAP모듈(62)은 SOAP에 따라 작성된 XML코드를 해석하여 처리하는 구성으로, 서버로부터 SOAP를 따르는 XML코드를 수신받은 경우 SOAP에 따라 이를 파싱하여 처리하는 역할을 수행한다. SOAP는 Simple Object Access Protocol의 약자로 XML과 HTTP 통신을 기반으로 하여 네트워크상에 존재하는 각종 컴포넌트 간의 호출을 효율적으로 실현하기 위한 방법을 제시하는 규약이다. 본 발명에 따른 WOT 기기용 RSS파서(6)는 상기 SOAP에 따라 작성된 XML코드를 수신하여 처리하는 SOAP모듈(62)을 추가로 포함함으로써, WOT 기기상에서 다양한 마크업 언어 코드의 처리환경을 제공하게 된다.
상기 JSON모듈(63)은 JSON코드로 작성된 문서를 읽어 텍스트 데이터를 추출해내는 작업을 수행한다. JSON(JavaScript Object Notation)은 유무선 통신망을 통해 서로 다른 기기 사이에서 텍스트 정보교환을 위한 경량 언어이다. JSON은 객체(Object), 배열(Array), 값(Value), 문자열(String), 숫자(Number)의 자료형을 갖고 서버와 클라이언트 사이에 통신을 수행하면서 상기와 같은 자료형의 텍스트 정보를 교환하게 된다. 정보를 보내는 쪽에서 텍스트 정보를 JSON코드로 구조화하여 전송하므로 정보를 받는 쪽은 전송받은 JSON코드에서 필요한 정보부분을 추출해야 하는데, 상기 JSON모듈(63)이 그 기능을 담당한다. 만일 서버에서 XML코드를 전송한 경우 XML파서를 이용하지 않고 JSON모듈(63)을 사용하려는 이상, JSON코드로의 변환이 필요할 수 있다. JSON코드는 구조화된 정보를 표현하기 위한 것이므로 구조화된 데이터를 전달하기 위해 XML과 병용하는 것이 가능하다.
상기 JSON모듈(63)은 클라이언트가 전송받은 JSON코드를 분리하고, 분리된 JSON코드의 요소를 분석하여 각 자료형 별로 처리할 수 있다. 이를 위해 상기 JSON모듈(63)은 JSON코드를 분리하는 코드분리모듈(미도시)과, 분리된 코드의 요소를 저장하는 요소저장모듈(미도시)을 포함할 수 있다. 만일 서버로부터 XML코드를 전송받은 경우 JSON모듈(63)을 사용하기 위해서는 별도의 구성인 코드변환모듈(미도시)에 의한 JSON코드로의 변환이 필요하다. 이 경우 상기 코드변환모듈은 JSON모듈(63)과 별도의 구성으로 존재할 수 있다. 모든 경우에 있어서 코드분리모듈은 JSON코드를 분리한다. JSON코드는 자바스크립트 구문의 형식을 따르므로 자바스크립트와 함께 쓰이는 경우가 많은바, 이때 객체형 데이터부분은 자바스크립트의 객체형으로, 마찬가지로 배열정보를 담고 있는 경우 자바스크립트의 배열형으로, 값의 정보를 담는 경우 자바스크립트의 값형으로, 문자열 정보를 담고 있는 경우 자바스크립트의 문자열형으로, 숫자정보를 담고 있는 경우 자바스크립트의 숫자형으로 처리가 가능하다. 상기 데이터 처리가 이루어지는 경우 요소가 종료될 때까지 JSON코드의 분리가 계속되면서 요소저장모듈에 의해 요소가 저장된다. JSON언어는 프로그래밍 언어와 플랫폼에 독립적으로 서로 다른 시스템간에 객체를 교환하기에 편리하며 특히, 자바스크립트 문법을 채용했기 때문에 eval명령으로 곧바로 사용이 가능해 편리하다. 상기 실시예에서와 같이 자바스크립트의 자료형으로 변환시키는 경우 구조화된 정보를 전송받아 처리할 수 있게 된다.
본 발명의 또 다른 실시예에서는, 상기 RSS파서(6)를 라이브러리(3')로 제공하는 WOT 기기용 어플리케이션 개발툴(4)이 제공된다(도 5 및 7 참조). 스마트폰과 같은 WOT 기기용 응용프로그램(2)을 개발하기 위해서 다양한 프로그래밍 언어와 라이브러리를 제공할 필요가 있는데, 본 발명은 전술한 RSS파서(6)를 API로 제공함으로써 WOT 기기를 위한 응용프로그램(2) 개발을 위한 다양한 RSS(또는 XML) 처리를 위한 API를 제공할 뿐 아니라, 전술한 바와 같이 파서의 처리속도와 효율을 높임으로써 고성능 RSS파서(6) API를 제공할 수 있게 된다.
또한, 상기 어플리케이션 개발툴(4)로 개발된 응용프로그램(2)이 WOT 기기상에서 제대로 구동하는지 확인할 수 있는 에뮬레이터(5)를 제공한다. 상기 에뮬레이터(5)는 WOT 기기에 사용되는 OS(Operating System)와 하드웨어의 특성을 반영하여 동일한 실행환경을 제공한다.
결과적으로 본 발명은 한정된 메모리와 자원을 활용해야만 하는 스마트폰과 같은 WOT 기기에 최적의 프레임워크(framework)를 제공하게 된다.
이상에서, 출원인은 본 발명의 바람직한 실시예들을 설명하였지만, 이와 같은 실시예들은 본 발명의 기술적 사상을 구현하는 일 실시예일 뿐이며 본 발명의 기술적 사상을 구현하는 한 어떠한 변경예 또는 수정예도 본 발명의 범위에 속하는 것으로 해석되어야 한다.
1: 확장 XML파서
2: 응용프로그램
3: 라이브러리, API(3': 라이브러리, API)
4: 어플리케이션 개발툴
5: 에뮬레이터
6: RSS파서
11: XML파싱모듈 12: SOAP/WSDL모듈 13: RSS모듈
110: 코드분리모듈 111: 요소저장모듈
112: 이벤트처리모듈 113: 노드생성모듈
61: RSS파싱모듈 62: SOAP모듈 63: JSON모듈
611: 엘리먼트분리모듈 612: 요소저장모듈
2: 응용프로그램
3: 라이브러리, API(3': 라이브러리, API)
4: 어플리케이션 개발툴
5: 에뮬레이터
6: RSS파서
11: XML파싱모듈 12: SOAP/WSDL모듈 13: RSS모듈
110: 코드분리모듈 111: 요소저장모듈
112: 이벤트처리모듈 113: 노드생성모듈
61: RSS파싱모듈 62: SOAP모듈 63: JSON모듈
611: 엘리먼트분리모듈 612: 요소저장모듈
Claims (2)
- XML코드를 각 요소로 분리하여 처리하는 XML파싱모듈과;
SOAP 또는 WSDL에 따라 작성된 XML코드를 해석하여 처리하는 SOAP/WSDL모듈;을 포함하고,
상기 XML파싱모듈은 XML코드를 분리하는 코드분리모듈과, 분리된 코드의 요소를 저장하는 요소저장모듈을 포함하여,
상기 XML파싱모듈은 분리된 각 요소에 이벤트가 발생하는 경우 이벤트를 처리하는 이벤트처리모듈과, 저장된 요소를 노드로 생성하여 계층화하는 노드생성모듈을 더 포함하고,
WOT 기기상에서 다양한 XML코드의 처리환경을 제공하는 것을 특징으로 하는 WOT 기기용 확장 XML파서. - 제1항에 있어서,
상기 XML파싱모듈은 C언어로 구현됨으로써 XML코드 처리를 위해 필요한 시간과 공간을 절약하는 것을 특징으로 하는 WOT 기기용 확장 XML파서.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004994A KR20180083089A (ko) | 2017-01-12 | 2017-01-12 | WOT(Web Of Things) 기기용 XML파서 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170004994A KR20180083089A (ko) | 2017-01-12 | 2017-01-12 | WOT(Web Of Things) 기기용 XML파서 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20180083089A true KR20180083089A (ko) | 2018-07-20 |
Family
ID=63103315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170004994A KR20180083089A (ko) | 2017-01-12 | 2017-01-12 | WOT(Web Of Things) 기기용 XML파서 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20180083089A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210154420A (ko) | 2020-06-12 | 2021-12-21 | 정소진 | 웨어러블 도보 길 안내 기기 |
-
2017
- 2017-01-12 KR KR1020170004994A patent/KR20180083089A/ko unknown
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20210154420A (ko) | 2020-06-12 | 2021-12-21 | 정소진 | 웨어러블 도보 길 안내 기기 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111600909B (zh) | 数据处理方法、装置、协议转换设备及存储介质 | |
US8458467B2 (en) | Method and apparatus for adaptive application message payload content transformation in a network infrastructure element | |
US8131753B2 (en) | Apparatus and method for accessing and indexing dynamic web pages | |
CN103237083B (zh) | 一种移动信息服务资源聚合系统及方法 | |
US20080208830A1 (en) | Automated transformation of structured and unstructured content | |
US7509422B2 (en) | System and method for locating web services | |
US20050262042A1 (en) | Generating a dynamic content creation program | |
CN102999337A (zh) | 浏览器封装系统及方法 | |
CN111831384A (zh) | 语言切换方法和装置、设备及存储介质 | |
CN101609415A (zh) | 基于中间件的通用服务调用系统及方法 | |
JP2005174120A (ja) | Webサービス接続処理方法とシステム、およびプログラム | |
CN111723314B (zh) | 网页展示方法、装置、电子设备及计算机可读存储介质 | |
CN105528369A (zh) | 网页转码方法、装置以及服务器 | |
CN107025124B (zh) | 网页技术开发单机软件的系统架构 | |
CN107222461B (zh) | 通信处理方法和装置 | |
KR20120122959A (ko) | 웹 컨텐츠 수집방법 및 수집장치, 그 기록매체 | |
KR20180083089A (ko) | WOT(Web Of Things) 기기용 XML파서 | |
JP5535184B2 (ja) | ブラウザ実行スクリプト変換システムおよびブラウザ実行スクリプト変換プログラム | |
KR20170085711A (ko) | IOT(Internet Of Things) 기기용 XML파서 | |
US9870216B2 (en) | Application providing method including extracting and converting packaged application | |
EP3502925A1 (en) | Computer system and method for extracting dynamic content from websites | |
KR20150067987A (ko) | 범용 임베디드 기기용 확장 xml파서 | |
KR20140017317A (ko) | 무선통신기기용 범용 rss파서 | |
KR20140017314A (ko) | 무선통신기기용 확장 xml파서 | |
KR20130022892A (ko) | 무선통신기기용 xml파서 |