태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

티스토리 툴바


단어학습 프로그램을 만들면서 수시로 만들어질 수 있는 단어데이터를 사용자들에게 효율적으로 알리는 방법을 생각하고있었다.

몇 가지 방법이 있었는데

  1. 자동 Update 프로그램을 만들어서 단어를 지속적으로 다운받을 수 있도록 한다
    1. 문제점 1: 할 줄 모른다.
    2. 문제점2: 서버가 필요하다-_-
    3. 문제점3: 귀찮다-_-;
  2. 어차피 블로그에 글을 포스팅하고있으니까 RSS를 이용한다.
    1. 문제점1: 역시 할 줄 모른다-_-
    2. 문제점2: 귀찮다-_-

 

어차피 만들기로 했고…어차피 둘 다 모르는 방법이었다. 그리고 그 외의 방법은 생각나지 않았다.
그렇다면…RSS를 이용해보자!

 

Reference: http://www.geekpedia.com/ (http://www.geekpedia.com/tutorial147_Creating-an-RSS-feed-reader-in-Csharp.html)

 

우선 Xml 네임스페이스를 가져다 씁니다.(Xml에 대한 책을 사 본지가 4년쯤 전인 것 같은데..그 땐 이게 이렇게 강력한 놈이 될 줄 몰랐죠..헤헤)

using System.Xml;

추가했습니다.

일단 코드를 죽~ 적어놓고 시작하죠

 

namespace ZunWordTrainer

{

public partial class RSS : Form

{

 

// 여기부터 우리가 사용할 녀석들입니다.

XmlTextReader rssReader;        // RSS를 읽어올 녀석입니다. rssReader = new XmlTextReader("RSS 주소");와 같이 사용

XmlDocument rssDoc;        // rssReader가 가져온 녀석을 문서화시키는 녀석이죠. 자세한건 Break시켜서 속성 확인해보시길..

//아래와 같은게 나옵니다.

 

XmlNode nodeRss;

XmlNode nodeChannel;

XmlNode nodeItem;

ListViewItem rowNews;

// 전부 다 써야하는 놈들임. 설명하는 것 보다 한번 해 보시고, 속성을 한번씩 열어보세요~^_^

//절대 귀찮은거 아님.

 

 

 

public RSS()

{

InitializeComponent();

}

 

private void RSS_Load(object sender, EventArgs e)

{

 

 

listView1.Items.Clear();                // 리스트뷰를 클리어하는건데 있어도 되고-_- 다른데다가 넣으실거면 다른데다가 해도 되고;;

rssReader = new XmlTextReader("http://hommasensei.tistory.com/rss");

//rssReader에 RSS를 입력시킵니다.

rssDoc = new XmlDocument();                //문서데이터를 저장할 녀석을 하나 만듭니다.

rssDoc.Load(rssReader);                // rssReader에서 문서데이터를 가져옵니다.

 

 

for(int i=0;i<rssDoc.ChildNodes.Count;i++)    //으음..rssDoc에서 "rss"에 대한 정보만을 가져옵니다.

{

if(rssDoc.ChildNodes[i].Name=="rss")        // 일일이 확인을 하는군요;;;

{

nodeRss = rssDoc.ChildNodes[i];

}

}

for(int i=0;i< nodeRss.ChildNodes.Count;i++)    //channel정보를 가져오는군요 xml버전이라던가등등;; 자세한건 브레이크걸어서 확인!

{

if(nodeRss.ChildNodes[i].Name=="channel")

{

nodeChannel=nodeRss.ChildNodes[i];

}

}

 

//여기까지 했으면 RSS자료를 다 가져온 거죠^^ 참~ 쉽죠잉?

 

richTextBox1.Text += "혼마선생님 공지사항! || What's NEW!!\n";

richTextBox1.Text += "http://hommasensei.tistory.com/";

 

 

for (int i = 0; i < nodeChannel.ChildNodes.Count; i++)

{// 자료의 개수만큼 넣고싶은 곳에 넣어주시면 됩니다!!

if (nodeChannel.ChildNodes[i].Name == "item")

{

nodeItem = nodeChannel.ChildNodes[i];    // 첫번째 포스트부터 가져오기 시작하는군요

 

rowNews = new ListViewItem();        //전 listView에 넣을거기 때문에 ListViewItem을 하나 만들고 거기에 자료를 입력한 후

                                    //그놈을 ListView에 추가하면 되는거죠. 그냥 자료입력할 수는 없음!!

 

            //여기서 주의!! 제가 만든 ListView를 보실까요?

 

// ListView에 Column순서가 Title, Date, Link, Contents(숨겨짐) 이죠? 그 순서대로 rowNews에 입력해야 합니다.

// 잘 이해가 안되신다면 ListView 사용법을 숙지하시길;;

 

rowNews.Text = nodeItem["title"].InnerText;

rowNews.SubItems.Add(nodeItem["pubDate"].InnerText);

rowNews.SubItems.Add(nodeItem["link"].InnerText);

//rowNews.SubItems.Add(nodeItem["description"].InnerText);

listView1.Items.Add(rowNews);            //만든 ListViewItem을 ListView에 추가합니다.

}

 

}

 

}

 

 

에혀…RSS리더기가 완성되었군요!!

주소입력창을 만들어서 RSS리더 생성 시 입력창에 입력된 주소의 RSS를 불러오도록 한다면 다용도 RSS리더가 되겠지요^^
한번 해 보시길!