단어학습 프로그램을 만들면서 수시로 만들어질 수 있는 단어데이터를 사용자들에게 효율적으로 알리는 방법을 생각하고있었다.
몇 가지 방법이 있었는데
- 자동 Update 프로그램을 만들어서 단어를 지속적으로 다운받을 수 있도록 한다
- 문제점 1: 할 줄 모른다.
- 문제점2: 서버가 필요하다-_-
- 문제점3: 귀찮다-_-;
- 어차피 블로그에 글을 포스팅하고있으니까 RSS를 이용한다.
- 문제점1: 역시 할 줄 모른다-_-
- 문제점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리더가 되겠지요^^
한번 해 보시길!
'자기전엔 전기전자 > ZUN장군의 허접 C# 강좌' 카테고리의 다른 글
| C#에서 클래스 변수 생성 시 에러메시지 (--- is inaccessible due to its protection level) (0) | 2010/03/18 |
|---|---|
| C#에서 시리얼통신(how to use serial communication in C#) (3) | 2010/03/06 |
| 다른 폼에서 직렬화(serialize)해서 저장한 파일 열기 (0) | 2010/02/26 |
| C#에서 #define 을 이용한 상수정의 (1) | 2010/02/25 |
| C#, 다른 프로젝트에서 만든 폼 불러오기 (0) | 2010/02/19 |
| can be designed, but is not the first class in the file. Visual Studio requires that designers use the first class in the file. Move the class code so that it is the first class in the file and try loading the designer again. 0 0 (0) | 2010/01/26 |
| C#에서 RSS 불러오기 (0) | 2009/05/27 |
| C# label font size 조절하기 (0) | 2009/05/19 |
| C# 다른 폼(form)의 변수 가져오기 (0) | 2009/05/17 |
| 텍스트박스를 키보드를 이용해 이동시키기 (0) | 2009/05/17 |
| C# 클래스배열 만들기 (0) | 2009/05/17 |


