1. RSS란?


RSS(Really Simple Syndication)는 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현 방식이다. 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다…(이하생략)


RSS란 간단하게 새로운 소식을 받아 보기 위해 사용한다. 특히 블로그나 뉴스처럼 자주 새로운 내용이 올라오는 사이트는 일일이 방문해서 보는 것은 번거로울 수 있다. 이 때, 해당 사이트에서 RSS 피드를 지원하다면 구독을 할 수 있다. 그러면 자동으로 업데이트 된 내용을 가져와서 볼 수 있다. 참고로 RSS의 내용은 XML 포맷으로 되어있다.


2. XML 파싱(Parsing)


흔히 XML이나 JSON 파일을 파싱한다는 소리들을 한다. 파싱은 데이터의 변환, 해석, 구조결정, 가공 등등의 여러가지 의미를 가지고 있고 설명이 조금씩 다르지만 파싱을 한다고 함은 아래의 일을 하는 것이다.

  1. 데이터를 읽고 해석하여 구조를 파악한다.
  2. 내가 원하는 형태로 처리하여 보여준다.


XML(Extensive Markup Language)는 플랫폼에 독립적인 마크업 언어로서, 태그를 사용하여 문서의 구조를 파악하기 쉽도록 되어있다. RSS 문서는 XML 포맷으로 되어있기 때문에 흔히 DOM 파서나 SAX 파서를 사용해서 내용을 가져온다. 문서의 양이 방대하지 않은 경우 한 번에 모든 데이터를 읽어온 후 처리하는 DOM 파싱을 사용하고, 문서의 양이 상대적으로 방대하거나 내용이 순차적으로 구성된 경우 필요한만큼 부분적으로 동적 처리가 가능하고 빠른 SAX 파서를 사용한다. 오늘 RSS 피더를 만들기 위해서는 일반적인 방법인 DOM 파싱을 사용할 것이다.


DOM(Document Object Model)파싱의 특징은 아래와 같다.

  1. 문서 전체를 해석하여 문서의 태그 구조에 대응하는 트리 구조의 DOM 객체를 메모리에 로딩한다.
  2. 모든 데이터가 메모리에 로드 되어있기 때문에 노드들의 검색, 수정이 용이하다.
  3. 트리 구조를 이루므로 데이터의 양이 방대해질수록 메모리 부하가 크게 증가한다.


1


DOM 객체의 각 노드는 Document, Element, Attribute로 나눌 수 있다.

노드 설명
Document DOM객체의 최상위 노드
Element 문서의 태그. 하나의 아이템
Attritbute 각 태그의 속성값


예를들어 어떤 회사의 조직정보를 DOM 객체로 나타낼때 회사 자체가 Document가 되고, 각각의 팀을 Element라 한다면 Attribute에는 팀의 이름, 팀의 인원수, 팀의 역할 등이 Attribute가 될 수 있다.


RSS와 XML문서 파싱에 대해 알았으니 안드로이드에서 XML문서로 된 뉴스정보를 파싱하여 가져와서 보여주는 RSS 피더(Feeder)를 만들어본다.


3. RSS 피더 앱 만들기


가장 먼저 RSS서비스 URL을 입력할 입력상자와 내용을 가져오기 위한 버튼을 만든다. 그 아래에는 리스트뷰를 만들어 하나의 아이템으로 하나의 뉴스를 가져오고, 뉴스 내용을 띄우기 위해서 웹뷰를 사용할 것이다. XML문서로 된 뉴스 내용을 가져오기 위해서 HTTP 프로토콜을 사용해 통신하면서 스트림으로 오는 XML 문자열들을 받아서 화면에 띄우는 방식으로 앱을 만들면 된다.


RSS 피더 프로젝트 파일 깃허브 저장소 링크{: target="_blank" }


구글과 책을 참고해서 만들었는데, 앱을 실행하면 아래 사진과 같은 화면이 나온다.


2


다음 뉴스 연예 카테고리 RSS 주소를 입력하고 불러온 화면이다. 여기에 추가적으로 리스트뷰의 아이템을 클릭했을 때 새로운 인텐트를 띄워서 뉴스기사 페이지로 이동하도록 하면 조금 더 완성된 앱이 될 수 있겠다.

+ Recent posts