오늘은 RSS 리더 만들기 두번째 시간입니다.
어제는 RSS가 무엇인지에 대해서 간단히 알아봤는데요..

오늘은 XML을 파싱하는 법에 대해서 알아보겠습니다.

"엥? XML을 파싱하더라도 RSS의 구조를 아는게 먼저가 되지 않나?"
하시는 분들도 있을 테지만
RSS도 XML로 만들어 졌으므로 일단 임의의 XML을 파싱해놓은 후, 
RSS의 구조에 맞게 해당 태그를 찾아 읽기만 하면 되는 것이겠죠.

그럼 XML을 어떻게 파싱을 하느냐?
많은 프로그래밍 랭귀지에서 XML을 파싱하기 쉽게 도와주고 있습니다.
여기서는 PHP의 XML Parser를 이용해서 구현해 보도록 하겠습니다.
이 XML Parser가 하는 일은 저도 완벽하게는 모르지만 제가 아는 정도만 이해 하셔도 xml을 파싱하는데는 무리가 없을 것입니다.

PHP의 XML Parser는 많은 함수를 제공하고 있는데요,
이 parser의 동작 원리는 "콜백함수"를 이용하고 있는 것입니다.
즉, 시작 태그를 만났을때, 태그 사이의 값을 만났을때, 종료 태그를 만났을때 이를 처리 하는 콜백 함수를 등록하는 것이 주요 원리 입니다.

xml_set_element_handler
xml_set_character_data_handler 

이 함수가 콜백 함수를 등록하는  함수들입니다.

xml_set_element_handler( $parser, startHandler, endHandler);
xml_set_character_data_handler( $parser, cdataHandler);

여기에 나오는 parser라는 변수는 무었일까요? 
파싱을 수행할 자원이라고 생각 하시면 됩니다.  이 자원을 얻기 위해서는

xml_parser_create 함수를 사용하시면 되구요, 그 예로는 

$parser = @xml_parser_create();

간단하죠?


이 함수들에 대한 구체 적인 예와, prototype은 
www.php.net 에서 보시면 됩니다. (메뉴얼 보는 것이 가장 중요하죠.ㅋ)

전체적인 흐름이 안들어오시나요? 그러면 이 함수들을 이용한 예를 보여 드리겠습니다.
$parser = @xml_parser_create();

if (is_resource($parser)){

   xml_set_object($this->parser, $this);
   xml_set_element_handler(
$parser,
"startHandler",
"endHandler");
   xml_set_character_data_handler(
$parser,
"cdataHandler");

}


function statHandler($parser, $element, $attr){
// 시작 태그 만났을때 여기서 처리
}


function endHandler($parser, $element){
// 종료 태그 만났을때 여기서 처리
}


function cdataHandler($parser, $cdata){
// 태그 사이 값을 만났을때 여기서 처리
}


xml_parse($parser, $data);  // $data <= xml file

// parser객체 해제
xml_parser_free($parser);
unset($parser);


이해가 가시나요? 

다음 시간에는 이 함수들을 이용하여 실제로 rss파일을 파싱해 보도록 하겠습니다.







신고
by danguria 2010.04.14 21:50
오랜만입니다~~  (__
프로젝트가 한달 늦어지고 면접일정도 오락가락 한다고 포스팅이 뜸했네요..
이번 프로젝트는 멤버십과 연관이 있어서 포스팅하기가 그래서 개발 과정에서 공부하는 것들을 정리 해 볼까 합니다.

제가 개발하게 된 부분중 하나가 웹에서 동작하는 RSS리더기를 만드는 것입니다. 요즘은 조금 뜸하지만 한 5년 전까지만 해도 활발하게 개발 되었는데 좀 늦은 감이 있군요.. 그래도 제가 웹 프로그래밍관련해서 처음 해보는 것이기 때문에 충분히 개발능력에 향상이 될 거라는 것에는 믿어 의심치 않습니다.

자~ 잡담은 그만 하고 본론으로 들어가도록 하겠습니다.

[RSS리더가 무엇인가?]

RSS리더를 만들어야 하는데 RSS가 무엇인지 모르는 사람은 없을 거라 믿고 과감히 스킵하도록 하겠습니다. 그래도 궁금해 하시는 분들을 위해서 RSS를 잘 설명하고 있는 사이트를 링크하겠습니다.


[RSS의 종류는 어떤 것이 있는가?]

RSS는 버전이 많지만 크게 나누면 세가지로 분류 할 수 있습니다.

RSS 2.* 계열
RSS 1.* 계열
ATOM

각각은 특색이 있는데 RSS리더를 구현할때는 크게 의미는 없을 것 같습니다.
좀더 자세한 설명은 다르 사이트를 참고 하세요. 제가 참고 했던 사이트를 링크하겠습니다.

모질라 개발자 센터 - https://developer.mozilla.org/Ko/RSS/Version

다음 포스팅에서는 RSS 2.0버전을 토대로 실제로 RSS를 읽어 보도록 하겠습니다.


신고
by danguria 2010.04.13 21:52
| 1 |

티스토리 툴바