일상+

RSS를 원하는 갯수만큼 보여주기 본문

컴퓨터공학

RSS를 원하는 갯수만큼 보여주기

이종준 2009. 9. 15. 09:52

요즘 RSS를 제공하는 사이트가 많아졌다.
네이버는 20개 단위로 뿌려주고
다음은 12개 단위로 뿌려준다.

일반적으로 Dataset으로 뿌려줄경우 갯수를 설정할수가 없다.
20개면 20개 12개면 12개 모두를 뿌려줘야한다.

하지만 자기가 원하는 만큼만 보여주려고 할 경우가 생긴다.

그러때는 직접 xml문서로 읽어와서 잘라서 뿌려줘야한다.

다음인 경우 아래와 같은 xml문서를 제공한다.

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><![CDATA[오늘의 주요뉴스 : 종합]]></title>
<link><![CDATA[http://media.daum.net/rss/today/primary/all/rss2.xml]]></link>
<description><![CDATA[오늘의 주요뉴스가 업데이트 됩니다.]]></description>
<pubDate><![CDATA[Tue, 15 Sep 2009 09:10:08 +0900]]></pubDate>
<language><![CDATA[ko]]></language>
<webMaster><![CDATA[]]></webMaster>
<item><title><![CDATA[거점병원에서 또 감염..불안 확산]]></title>
<description><![CDATA[신종플루 거점병원에 입원해 치료를 받던 일반 환자가 신종플루에 감염된 것으로 드러났습니다.보건당국은 대구의 신종플루 거점병원에 입원해 있던 9살 어린이가 신종플루에 감염된 것으로 확인됐다고 밝혔습니다. 어린이는 지난달 26일 교통사고를 당해 입원했다가 이달 ]]></description>
<link><![CDATA[http://media.daum.net/society/affair/view.html?cateid=1010&newsid=20090915015804577&p=YTN
]]></link>
</item>
<item><title><![CDATA[박선영 의원 "온종일 마음은 콩밭에"]]></title>
<description><![CDATA["하루 종일 마음이 콩밭에 있었습니다." 자유선진당 대변인인 박선영 의원은 26년 동안 인생의 반려자인 남편 민일영 대법관 후보자의 국회 인사청문회가 실시된 14일 오후 싸이월드 미니홈피에 이렇게 심경을 밝혔다. 평소 공세적 논평으로 야당 대변인의 역할을 똑부러지게]]></description>
<link><![CDATA[http://media.daum.net/politics/others/view.html?cateid=1020&newsid=20090915024106999&p=hankooki
]]></link>
</item>
<item><title><![CDATA[덩치큰 지자체 '흡수'..주민반발 자초]]></title>
<description><![CDATA[><img src='http://photo-media.daum-img.net/200909/15/hani/120x120_20090915073006239.jpeg'>[한겨레] 남양주, 구리쪽 의견 묻지도 않고 추진 파열음성남 “졸속” 반대…완주·청원선 “흡수 안돼”전문가들 “위로부터 강행 풀뿌리 자치 위협”설익은 행정구역 통합 곳곳 갈등 이명박 대통령의 ‘8·15 발언’과 행정안전부의 자율통합 지원 대책을 계기로 행정구역 개편 ]]></description>
<link><![CDATA[http://media.daum.net/society/nation/others/view.html?cateid=100011&newsid=20090915073005711&p=hani
]]></link>
</item>

여기서 우리는 item안에 있는 title, link, description등이 필요하다.

            string title = null;
            string link = null;
            string pubDate = null;
            string author = null;
            string xmlpath = "http://RSS주소";
            XmlDocument xmldoc = new XmlDocument();
            xmldoc.Load(xmlpath);
            XmlNodeList xnl = xmldoc.SelectNodes("//item");
            int maxCount = xnl.Count - 4; // 총개수에서 -4를한만큼만 보여준다.
            for (int i = 0; i < maxCount; i++)
            {
                XmlNode xn = (XmlNode)xnl[i];
// 글자수가 27이상일 경우 잘라주는 부분이다.
                if (xn["title"].InnerText.ToString().Length > 27)
                {
                    title = xn["title"].InnerText.ToString().Substring(0, 28);
                }
                else
                {
                    title = xn["title"].InnerText.ToString();
                }
                link = xn["link"].InnerText.ToString();
                //pubDate = xn["pubDate"].InnerText.ToString();
                //author = xn["author"].InnerText.ToString();
// t_title 라는 라벨을 하나 만들어서 리스트로 뿌려준다.
                t_title.Text += "<a href='" + link + "' target='_blank'><li>" + title + "</li></a>";
            }

결과 화면은 다음과 같다.



제목을 선택하면 해당 기사페이지가 새창으로 뜬다.

구글을 통해 이런기능이 있나 찾아봤지만 없었다..

부디 나와 같은 삽질은 반복되지 않기를 바라며...
Comments