지인의 협찬(?)으로 가민 데이터와 엔도몬도 데이터를 받았다.
근데 중구난방으로 주는 바람에 어느게 어떻게 빼낸건지 알수가 없으니 -_-a

LATitude - 위도
LONgitude - 경도
ELEvation - 고도

엔도몬도 에서 빼낸걸로 추측되는 녀석 - no name.gpx
<?xml version="1.0" encoding="UTF-8"?>
<gpx version="1.1" creator="Endomondo.com" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd http://www.garmin.com/xmlschemas/GpxExtensions/v3 http://www.garmin.com/xmlschemas/GpxExtensionsv3.xsd http://www.garmin.com/xmlschemas/TrackPointExtension/v1 http://www.garmin.com/xmlschemas/TrackPointExtensionv1.xsd" xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:gpxx="http://www.garmin.com/xmlschemas/GpxExtensions/v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <metadata>
    <author>
      <name>realname</name>
      <email id="userid" domain="domain"/>
    </author>
    <link href="http://www.endomondo.com">
      <text>Endomondo</text>
    </link>
    <time>2013-06-21T13:22:46Z</time>
    <bounds minlat="37.5467156432569" minlon="127.10688499733806" maxlat="37.54518276080489" maxlon="127.11972624063492"/>
  </metadata>
  <trk>
    <src>http://www.endomondo.com/</src>
    <link href="http://www.endomondo.com/workouts/userid/workoutid">
      <text>endomondo</text>
    </link>
    <type>CYCLING_SPORT</type>
    <trkseg>
      <trkpt lat="37.5467156432569" lon="127.10688499733806">
        <ele>42.4</ele>
        <time>2013-06-15T21:52:13Z</time>
        <extensions>
          <gpxtpx:TrackPointExtension>
            <gpxtpx:cad>70</gpxtpx:cad>
          </gpxtpx:TrackPointExtension>
        </extensions>
      </trkpt> 

가민에서 빼낸걸로 추측되는 녀석 - no name.tcx
<?xml version="1.0" encoding="UTF-8"?>
<TrainingCenterDatabase xmlns="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2 http://www.garmin.com/xmlschemas/TrainingCenterDatabasev2.xsd">
  <Activities>
    <Activity Sport="Biking">
      <Id>2013-06-16T08:37:04Z</Id>
      <Lap StartTime="2013-06-15T21:52:13Z">
        <TotalTimeSeconds>10513.809</TotalTimeSeconds>
        <DistanceMeters>70220.21</DistanceMeters>
        <Calories>2319</Calories>
        <Cadence>78</Cadence>
        <Intensity>Active</Intensity>
        <TriggerMethod>Manual</TriggerMethod>
        <Track>
          <Trackpoint>
            <Time>2013-06-15T21:52:13Z</Time>
            <Position>
              <LatitudeDegrees>37.5467156432569</LatitudeDegrees>
              <LongitudeDegrees>127.10688499733806</LongitudeDegrees>
            </Position>
            <AltitudeMeters>42.4</AltitudeMeters>
            <Cadence>70</Cadence>
          </Trackpoint>
 

넌도대체 어디서 나온 녀석이니 - 20130616.gpx
아무튼 이 녀석은 케이던스 데이터가 손실되었다.
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="MapSource 6.5" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
 <trk>
  <name>ACTIVE LOG</name>
  <trkseg>
   <trkpt lat="37.54680" lon="127.10719">
    <ele>42.461185</ele>
    <time>2013-06-15T21:51:21Z</time>
   </trkpt> 

[링크 : http://en.wikipedia.org/wiki/Latitude] 위도
[링크 : http://en.wikipedia.org/wiki/Longitude] 경도
[링크 : https://en.wikipedia.org/wiki/Elevation] - 지오이드로 부터의 높이(대개는 지오이드-지표면의 높이)
[링크 : http://en.wikipedia.org/wiki/Altitude] - 지오이드로 부터의 높이(대개는 지오이드-공중의 높이)

[링크 : http://en.wikipedia.org/wiki/GPS_eXchange_Format]
    [링크 : http://www.topografix.com/gpx.asp]
[링크 : http://en.wikipedia.org/wiki/Training_Center_XML]
    [링크 : http://developer.garmin.com/schemas/tcx/v2/]

'프로그램 사용 > expat & XML' 카테고리의 다른 글

GPX TCX 포맷  (0) 2013.06.22
Javascript DOM API / XML  (2) 2010.07.13
[해결중] expat 버퍼 관련 문제  (0) 2010.05.25
expat으로 smi 자막파일 파싱은 불가?  (0) 2010.05.03
SAX (Simple API for XML)  (0) 2010.04.23
xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
Posted by 구차니

댓글을 달아 주세요

XML을 사용하려면 순수하게 XML만으로 사용하기 보다는
DOM이나 SAX를 사용하게 되는데 DOM은 일반적으로 웹브라우저의 Javascript에서 지원한다.

이래저래 XML을 공부하는 겸 자바 스크립트도 공부를 해야겠다. OTL

[링크 : http://www.gotapi.com/]
[링크 : http://www.w3schools.com/Xml/xml_parser.asp]
[링크 : http://msdn.microsoft.com/en-us/library/aa468547.aspx]
[링크 : http://msdn.microsoft.com/en-us/library/aa286548.aspx]
[링크 : http://krook.org/jsdom/

[링크 : http://www.adobe.com/devnet/acrobat/pdfs/js_api_reference.pdf] << Javascript for Acrobat API

'프로그램 사용 > expat & XML' 카테고리의 다른 글

GPX TCX 포맷  (0) 2013.06.22
Javascript DOM API / XML  (2) 2010.07.13
[해결중] expat 버퍼 관련 문제  (0) 2010.05.25
expat으로 smi 자막파일 파싱은 불가?  (0) 2010.05.03
SAX (Simple API for XML)  (0) 2010.04.23
xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
Posted by 구차니

댓글을 달아 주세요

  1. 이웃블로거님들과 재미난 시간을 가졌군요. 부럽습니다.

    2010.07.13 01:08 [ ADDR : EDIT/ DEL : REPLY ]

expat은 아래와 같은 기본 코드로 작동된다. (링크 참조)
2010/03/23 - [프로그램 사용/expat / XML] - expat-2.0.1 example

문제는 위의 main() 함수에서 fread()를 이용하여 버퍼 사이즈 만큼 읽어오기 때문에
최악의 경우 데이터나 elemet가 잘리는 경우가 발생할수 있다는 것이다.
예를 들어

<entry gd:etag="W/"CUQFRX47eCp7ImA9WxFXF0s."">
    <id>tag:youtube.com,2008:video:qlZjYvHWTo4</id>
    <published>2010-05-19T07:13:31.000Z</published>
    <updated>2010-05-25T04:55:14.000Z</updated>
</entry>

이러한 XML이 있고, "id" 태그의 데이터를 읽으려고 할때 최악의 경우
버퍼의 경계에 걸릴경우,
tag:youtube.com,2008:vide
o:qlZjYvHWTo4
이런식으로 두번을 읽어 오게 된다.

일단은 버퍼를 늘리는 것 외에는 딱히 다른 방법은 찾지 못했다.

'프로그램 사용 > expat & XML' 카테고리의 다른 글

GPX TCX 포맷  (0) 2013.06.22
Javascript DOM API / XML  (2) 2010.07.13
[해결중] expat 버퍼 관련 문제  (0) 2010.05.25
expat으로 smi 자막파일 파싱은 불가?  (0) 2010.05.03
SAX (Simple API for XML)  (0) 2010.04.23
xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
Posted by 구차니
TAG expat

댓글을 달아 주세요

smi 파일을 파싱할일이 생겨서 대충 훑어 보는데
아무리 봐도 열고닫기가 잘안되있어서 안될꺼 같았는데

의외로 엉뚱한 부분에서 진행이 안된다.

$ ./smi.o
not well-formed (invalid token) at line 9

<SAMI>
<HEAD>
<Title> Produced by CCMP produced by CineCaption </Title>
<STYLE TYPE="text/css">
<!--
P { margin-top:2pt; margin-bottom:2pt; margin-left:8pt; margin-right:8pt;
    text-align:center;
    font-size:20pt; font-family:arial, sans-serif; font-weight:normal; color:white; }
.KRCC { Name:한글; lang:ko-KR; SAMIType:CC;}
.ENCC { Name:영어; lang:en-US; SAMIType:CC;}
#STDPrn { Name:보통;}
#LargePrn { Name:크게; font-size:25pt;}
#SmallPrn { Name:작게; font-size:15pt;}
-->
</Style>

9 line은 .KRCC 라는 부분인데 시작부터 막히는구나.. ㅠ.ㅠ
Posted by 구차니

댓글을 달아 주세요

expat도 SAX의 일종이라고 할 수 있을지는 모르겠지만,
방식측면에서는 event-driven 이니 SAX는 맞는것 같다.

아무튼, DOM 구조가 없으니 navigation은 힘든편.

SAX (Simple API for XML) is a serial access parser API for XML. SAX provides a mechanism for reading data from an XML document. It is a popular alternative to the Document Object Model (DOM).

[링크 : http://en.wikipedia.org/wiki/Simple_API_for_XML]

DOM vs SAX 파서

두 가지 유형의 XML 문서 파서가 있다. 이들은 XML 문서에 액세스하는 방식부터 다르다:

  • Document Object Model (DOM). XML 문서로의 랜덤 액세스(random access)에 사용된다. DOM의 장점은 메모리 안에 문서의 전체 모델을 갖고 있다는 점이다. 이는 모든 XML 엘리먼트에 어떤 순서로든지 액세스가 가능하다는 것을 의미한다. 하지만 큰 문서의 경우 둔해 질 수 있다. 메모리에서 실행시키지 않으면 시스템이 한계에 다다를 때 퍼포먼스가 느려진다.
  • Simple API for XML (SAX). 순차적 액세스(sequential access)에 사용된다. SAX의 장점은 문서의 한 부분이 메모리에서 사용될 수 있기 때문에 보다 큰 문서를 핸들할 수 있다는 점이다. SAX의 단점은 엘리먼트를 순서대로 처리해야 하며 한번에 볼 수 있는 문서 부분도 작다. SAX를 이용하여 문서를 파싱할 때 XML 부분을 저장할 수 있다.

[링크 : http://www.ibm.com/developerworks/kr/library/j-xmljava/]

Simple API for XML (SAX) 이벤트 중심 API이다. XML 마크업의 다른 부분들(시작과 끝 태그, 텍스트, 엔터티)에서 실행된 특정 이벤트용 핸들러 코드를 등록한다. 이 파서는 인풋 XML에 기반하여 이러한 이벤트들의 스트림을 보내면, 핸들러 코드는 이를 처리한다.

[링크 : http://www.ibm.com/developerworks/kr/xml/standards/x-saxspec.html]

SAX is the Simple API for XML, originally a Java-only API. SAX was the first widely adopted API for XML in Java, and is a “de facto” standard.

[링크 : http://www.saxproject.org/] SAX 공식


Posted by 구차니
TAG SAX

댓글을 달아 주세요

IBM 문서인데,
결국 XML 탐색은 tagname이 유일하거나 혹은 name space로 구분함으로서
실질적으로 유일한 tag name을 주어 키워드로 검색하고
그에 따른 child나 parent 이런식으로 검색을 용이하게 하는 것으로 보인다.

결론 : 결국은 범용 XML 리더는 존재하지 않고, 개별 XML 구조에 맞도록 읽어 와야 한다는 것으로 판단됨.

[링크 : http://www.ibm.com/developerworks/kr/library/x-xmlajaxpt1/]
Posted by 구차니

댓글을 달아 주세요

XML_SetCharacterDataHandler() 함수는 prototype에서 보이는 대로
XML_char *s, int len 두개의 변수를 이용한다.

즉, 이 함수를 통해 받아들여지는 내용을 출력하기 위해서는
printf("%s",s); 가 아닌

for (int i = 0; i < len; i++) printf("%c",s[i]);
로 한글자씩 len에 맞게 출력을 해주어야 한다.

XML_SetCharacterDataHandler(XML_Parser p, XML_CharacterDataHandler charhndl)

typedef void (*XML_CharacterDataHandler)(void *userData, const XML_Char *s, int len);

Set a text handler. The string your handler receives is NOT zero terminated. You have to use the length argument to deal with the end of the string. A single block of contiguous text free of markup may still result in a sequence of calls to this handler. In other words, if you're searching for a pattern in the text, it may be split across calls to this handler.

[링크 : http://www.xml.com/pub/a/1999/09/expat/index.html?page=3#chardatahandler]

<media:description type='plain'>The funniest 6 minutes you will ever see! Remember how many of these you have done! Follow @ http://www.twitter.com/judsonlaipply Check my book out at http://www.mightaswelldance.com
http://www.theevolutionofdance.com -
for more info including song list!</media:description>

                        <media:description type="plain">
========== [4]
The funniest 6 minutes you will ever see! Remember how many of these you have done! Follow @ http://www.twitter.com/judsonlaipply Ch
eck my book out at http://www.mightaswelldance.com
========== [4]


========== [4]
http://www.theevolutionofdance.com -
========== [4]


========== [4]
for more info including song list!
                        </media:description>

그리고, 위에 보이듯이, 줄단위로 받아들이므로
단순하게 한번 복사하는 걸로는 충분하지 않아 보인다.(어떻게 할지 모호하면.. realloc 해주어야 하나..)

'프로그램 사용 > expat & XML' 카테고리의 다른 글

SAX (Simple API for XML)  (0) 2010.04.23
xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat-2.0.1 example  (11) 2010.03.23
Posted by 구차니

댓글을 달아 주세요

expat xml 파서를 이용해서 xml을 구조화시키는(간단하게 탭정렬) 것을 하다보니, data 부분에서 파싱에러가 발생한다.
URL 등에서 &가 &amp; 로 변환되지 않았다고
"세미콜론이(;)이 와야 합니다." 라는 문법오류가 발생한다.

아무튼 expat의 기본샘플 프로그램(?)인
xmlwf.c의 내용을  보니 별도로 이러한 특수문자를 처리하는 함수가 있었다.

static void XMLCALL
characterData(void *userData, const XML_Char *s, int len)
{
  FILE *fp = (FILE *)userData;
  for (; len > 0; --len, ++s) {
    switch (*s) {
    case T('&'):
      fputts(T("&"), fp);
      break;
    case T('<'):
      fputts(T("<"), fp);
      break;
    case T('>'):
      fputts(T(">"), fp);
      break;
#ifdef W3C14N
    case 13:
      fputts(T("&#xD;"), fp);
      break;
#else
    case T('"'):
      fputts(T("""), fp);
      break;
    case 9:
    case 10:
    case 13:
      ftprintf(fp, T("&#%d;"), *s);
      break;
#endif
    default:
      puttc(*s, fp);
      break;
    }
  }
}

아무튼, 많이 보던 녀석인데 도대체 어떤 표준인지 알수가 없는데,
검색하다 보니 iso8859-1 인것 같기도 하고.. 구분이 모호하다.
아무튼, XHTML/HTML에서 사용되는 방식인듯 하다.

Reserved Characters in HTML

Some characters are reserved in HTML and XHTML. For example, you cannot use the greater than or less than signs within your text because the browser could mistake them for markup.

HTML and XHTML processors must support the five special characters listed in the table below:

Character Entity Number Entity Name Description
" &#34; &quot; quotation mark
' &#39; &apos; (does not work in IE) apostrophe 
& &#38; &amp; ampersand
< &#60; &lt; less-than
> &#62; &gt; greater-than
Note: Entity names are case sensitive!

[링크 : http://www.w3schools.com/tags/ref_entities.asp]
[링크 : http://microweb.textcube.com/31]

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat-2.0.1 example  (11) 2010.03.23
expat  (4) 2010.03.21
Posted by 구차니

댓글을 달아 주세요

expat은 handler를 기반으로 작동한다.
특정 이벤트에 작동하는 핸들러를 등록하여 그 값을 뺴내는데
이벤트(?)는 아래의 SetHandler 함수로 등록을 한다.

StartElement는 <tag>
EndElement는 </tag> 에
대해서 값을 받아 오도록 한다.

[링크 : http://www.hpc.wm.edu/SciClone/documentation/software/misc/expat/reference.html]

머.. 일단 실행은 해보고 -ㅁ-?
Start와 End는 확실한데.. 다른건 좀 일단 실험을... ㅠ.ㅠ

XML_SetElementHandler 는 XML_SetStartElementHandler 보다 우선하고,
static void XMLCALL ElementHandler (void *userData, const XML_Char *name, const XML_Char **atts)
에서 name은 XML_SetStartElementHandler 에서 리턴하는 것과 같고
atts는 몇 개인지 알수는 없으므로  atts[idx] != NULL 일때 까지 돌리는수 밖에 없다.

원본데이터
<ns0:feed xmlns:ns00="http://www.w3.org/2005/Atom">

결과물
name[ns0:feed]
atts[xmlns:ns0] atts[http://www.w3.org/2005/Atom]

atts[idx]

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat-2.0.1 example  (11) 2010.03.23
expat  (4) 2010.03.21
Posted by 구차니
TAG expat

댓글을 달아 주세요

expat-2.0.1 에 포함되어있는 예제파일인
elements.c를 약간 변형하여

XML tag로 출력되도록 약간 수정하였다.
컴파일에 필요한 libexpat.lib 파일과 expat.h 파일
그리고 테스트용 XML 파일(youtube page)가 포함되어있다.
(libexpat.lib는 내부적으로 libexpat.dll을 호출하는 것으로 보인다.)



/* This is simple demonstration of how to use expat. This program
reads an XML document from standard input and writes a line with
the name of each element to standard output indenting child
elements by one tab stop more than their parent element.
It must be used with Expat compiled for UTF-8 output.
*/

#include "stdio.h"
#include "expat.h"

#if defined(__amigaos__) && defined(__USE_INLINE__)
#include "proto/expat.h"
#endif

#ifdef XML_LARGE_SIZE
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
#define XML_FMT_INT_MOD "I64"
#else
#define XML_FMT_INT_MOD "ll"
#endif
#else
#define XML_FMT_INT_MOD "l"
#endif

static void XMLCALL
startElement(void *userData, const char *name, const char **atts)
{
	int i;
	int *depthPtr = (int *)userData;
	for (i = 0; i < *depthPtr; i++)
		putchar('\t');
	printf("<%s>\n",name);
//	puts(name);
	*depthPtr += 1;
}

static void XMLCALL
endElement(void *userData, const char *name)
{
	int i;
	int *depthPtr = (int *)userData;
	*depthPtr -= 1;
	for (i = 0; i < *depthPtr; i++)
		putchar('\t');
	printf("</%s>\n",name);
	//	puts(name);
}

int
main(int argc, char *argv[])
{
	FILE *fp;
	char buf[BUFSIZ];
	XML_Parser parser = XML_ParserCreate(NULL);
	int done;
	int depth = 0;
	
	fp = fopen("GetRecentlyFeaturedVideoFeed.xml","r");
	
	XML_SetUserData(parser, &depth);
	XML_SetElementHandler(parser, startElement, endElement);
	do {
		int len = (int)fread(buf, 1, sizeof(buf), fp);
		done = len < sizeof(buf);
		if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) {
			fprintf(stderr,
				"%s at line %" XML_FMT_INT_MOD "u\n",
				XML_ErrorString(XML_GetErrorCode(parser)),
				XML_GetCurrentLineNumber(parser));
			return 1;
		}
	} while (!done);
	XML_ParserFree(parser);
	fclose(fp);
	return 0;
}

'프로그램 사용 > expat & XML' 카테고리의 다른 글

xml 트리 탐색 - XML tree navigation  (0) 2010.04.17
expat XML_SetCharacterDataHandler() function  (0) 2010.04.09
&amp; &lt; &gt; &quot; 는 머지?  (0) 2010.03.31
expat '간략한' 사용법  (0) 2010.03.28
expat-2.0.1 example  (11) 2010.03.23
expat  (4) 2010.03.21
Posted by 구차니
TAG expat

댓글을 달아 주세요

  1. 초보

    안녕하세요 expat를 사용하기 시작했는데
    지금 컴파일조차 못하고있습니다 ㅠㅠ
    ubuntu에서 여기서받은 파일을 컴파일하려면
    어떤 명령어를 써야하냐요?
    gcc -라든지

    아니면 Makefile작성 하신게있나요?ㅠㅠ

    2015.11.16 11:01 [ ADDR : EDIT/ DEL : REPLY ]
    • $ sudo apt-get install expat
      $ gcc -lexpat elements.c

      라즈베리 파이에서 해서 expat이 설치되어 있을 가능성도 있기에
      안될 경우 libexpat1-dev 패키지를 설치해보시기 바랍니다.

      2015.11.16 11:12 신고 [ ADDR : EDIT/ DEL ]
  2. jjj

    혹시 질문 가능한가요 ㅠㅠㅠ

    2016.05.25 18:22 [ ADDR : EDIT/ DEL : REPLY ]
    • 질문은 가능하나.. 답변이 가능할진 모르겠습니다 ㅠㅠ
      쓴지 오래된 녀석이고 조금만 건드려봐서요 ㅠㅠ

      2016.05.25 18:34 신고 [ ADDR : EDIT/ DEL ]
    • 비밀댓글입니다

      2016.05.26 10:36 [ ADDR : EDIT/ DEL ]
    • xml 파싱이 목적이신가요?
      xml 파싱을 통해 DOM tree 생성이나, 특정 값을 뺴내고 수정하는게 목적인가요?
      위의 내용에 따라 접근방법이나 사용할 라이브러리 등이 달라질수 있습니다.

      2016.05.26 10:53 신고 [ ADDR : EDIT/ DEL ]
    • jjj

      buffer에 xml형태의 문자를 받아서 이것을 .txt형태로 바꾼 다음에
      그 xml내용을 name:aaa value:21 이런식으로 파일을 읽어오고 싶습니다ㅜㅜ 수정이나 삭제의 목적은 없고 그냥 파싱을 하고싶습니다!ㅠㅠ

      2016.05.26 11:04 [ ADDR : EDIT/ DEL ]
    • 공부 목적으로 위의 라이브러리를 통해 직접 파싱할게 아니라면
      http://xmlstar.sourceforge.net/doc/xmlstarlet.txt 와 같은 유틸리티를 이용해서 저장된 xml중 원하는 값만 빼내는 옵션을 찾아 보시는게 간편하게 검증도 잘 될거라고 생각합니다.
      expat을 쓰면.. element / variable 별로 핸들러를 생성해서
      일일이 다 처리 해주어야 하기에
      dom tree 생성도 수작업으로 하고.. 어떤 조건(어떤 element 값에 어떤 value 라던가..)에 부합하는 값을 빼내려면 작업량이 상당히 많아 집니다.
      웹에서 하는 거라면 HTML DOM을 적용해 javascript로 편하게 처리하는 것도 방법입니다.

      2016.05.26 11:12 신고 [ ADDR : EDIT/ DEL ]
    • jjj

      아ㅜㅜ 감사합니다 지금 c랑 c++을 통해서 파싱하려고 하고있습니다ㅜㅜ

      2016.05.26 11:17 [ ADDR : EDIT/ DEL ]
    • expat 라이브러리 사용해서 해도 되는건가요?
      parsing 과제로 하는건가요? 후자라면.. automata 쪽에서
      state diagram 공부하셔서 직접 파싱 룰에 따라 파싱하셔야 합니다.
      xml은 그래도 문법이 엄격해서 파서를 짜기 쉽습니다.

      2016.05.26 11:19 신고 [ ADDR : EDIT/ DEL ]
    • jjj

      아 감사합니다!!!ㅜㅜ 라이브러리를 사용하든 직접 소스를 작성하든 parsing만 되면된다고하셨습니다ㅜㅜ네 parsing이 과제입니다
      한번 알아보겠습니다ㅠㅠㅠ

      2016.05.26 11:28 [ ADDR : EDIT/ DEL ]