|
°Á Àü Å¿ÀÀÇ Àâ´ã>
Å¿À ÁִϾ ž°í ³ª´Ï, È®½ÇÈ÷ ÀáÀ» ÀÚ´Â °ÍÀÌ ¾î·Á¿öÁ³½À´Ï´Ù. »õº®¿¡ ¸î¹øÀ̳ª
±ú´ÂÁö ¸ð¸£°Ú¾î¿ä. ¤Ð¤Ð... ±×·¡µµ À̻ڱ⸸ ÇÏ´Ï... ÀÌ°Í Âü
½Å±âÇÕ´Ï´Ù.
Å¿ÀÀÔ´Ï´Ù.
ÀÚ... °Á°¡ Á¶±Ý ´ÊÀº °¨ÀÌ ¾øÁö ¾ÊÁö¸¸, Å¿À »çÀÌÆ® ¼¹ö ÀÌÀüÀÛ¾÷µµ ±× »çÀÌ¿¡ ÀÖ¾ú°í, ¶ÇÇÑ Å¿À´å³Ý º£Å¸»çÀÌÆ®¸¦ ¸¸µå´À¶ó
¸¹Àº ½Ã°£À» ÇÒ¾ÖÇϰí Àֱ⿡... ±×·± °ÍÀ̾úÀ¸´Ï ¿©·¯ºÐµéÀÌ ¸¹ÀÌ ÀÌÇØÇØ ÁÖ½Ç °ÍÀ̶ó ¹Ï¾î ÀǽÉÄ¡ ¾Ê¾Æ¿ä ^^ È÷Èý~~
±×·³ ÀÌÁ¦ º»°ÝÀûÀ¸·Î ½ÃÀÛÇØ º¼±î¿ä?
ÀÏ´Ü, Àú¹ø °Á¸¦ ²Ä²ÄÈ÷ ÀÐÀ¸½Å ºÐÀº ´ÙÀ½°ú °°Àº ÀÏÁ¾ÀÇ ±ÔÄ¢(?)À» ¾Ë°í
°è½Ã¸®¶ó »ý°¢ÇÕ´Ï´Ù.
1. ÇϳªÀÇ RSS ÆÄÀÏÀº ÇϳªÀÇ Channel ¿ä¼Ò¿Í ¿©·¯°³ÀÇ Item ¿ä¼Ò·Î
±¸¼ºµÈ´Ù. 2. ChannelÀº title, link, description, lastBuildDateµîÀÇ ÇÏÀ§
¿ä¼Ò¸¦ °¡Áú ¼ö ÀÖ´Ù. 3. °¢°¢ÀÇ Item Àº Author, Category, Title, Link, Pubdate
µîÀÇ ÇÏÀ§ ¿ä¼Ò¸¦ °¡Áú
¼ö ÀÖ´Ù.
´ë·« ÀÌÁ¤µµÀÇ ±ÔÄ¢¸¸À¸·Îµµ ¿ì¸®°¡ °°ÀÌ Á¦ÀÛÇÏ·Á´Â RSSReader¸¦ ¼³°èÇÏ´Â
µ¥¿¡´Â Å©°Ô ¹®Á¦°¡ ¾øÀ» °Í °°½À´Ï´Ù. ÄÄÆ÷³ÍÆ®¸¦ ¸¹ÀÌ ¸¸µé¾î º¸½Å ºÐÀº À§ÀÇ Á¤ÀǸ¸À¸·Îµµ ½±°Ô ÇÊ¿äÇÑ °³Ã¼µéÀ» ÃßÃâÇØ³»½Ç
¼ö ÀÖÀ»
°Í °°½À´Ï´Ù.
ÀÏ´Ü, item À̶ó´Â °³Ã¼°¡ ÇÊ¿äÇÒ °Í °°±¸¿ä. ¶ÇÇÑ, channel À̶ó´Â
°³Ã¼µµ ÇÊ¿äÇÒ °Í °°³×¿ä. ±×¸®°í, item °³Ã¼µéÀº ¿©·¯°³°¡ ÀÖÀ» ¼ö Àֱ⿡, ±×µéÀ» ±×·ìÇÎÇϱâ À§ÇÑ Ä÷º¼Ç
°³Ã¼µµ Çϳª ÀÖ¾î¾ß ÇÒ °Í °°½À´Ï´Ù. ±×¸®°í, ¸¶Áö¸·À¸·Î ±×µéÀº °¢°¢ RssReader °³Ã¼¸¦ ÅëÇØ¼ Á¢±ÙµÉ ¼ö
ÀÖ´Â ¼Ó¼ºÀ̱⵵ ÇØ¾ßÇÒ °Í °°½À´Ï´Ù.
ÇØ¼, Àú´Â ´ÙÀ½°ú °°Àº ±¸¼ºÀ» ±×·Áº¸¾Ò½À´Ï´Ù.
¹è°æ»öÀÌ ÇÏ¾á °ÍÀº °³Ã¼À̰í, ȸ»öÀÎ °ÍÀº Ä÷º¼ÇÀ» ÀǹÌÇÑ´Ù°í º¸½Ã¸é µÇ°Ú½À´Ï´Ù. ^^; ´ë·«ÀûÀ¸·Î À§¿Í°°Àº ±¸Á¶¸¦
°¡Áø´Ù¸é ±×·±´ë·Î ÀûÀýÇϰÚÁÒ? Âü°í·Î, ÀúÀÇ °æ¿ì´Â Reader °³Ã¼ÀÇ À̸§Àº RssReader·Î,
Channel °³Ã¼ÀÇ À̸§Àº RssChannel·Î, itemÀÇ À̸§Àº RssItemÀ¸·Î, ±×¸®°í ¸¶Áö¸·À¸·Î Ä÷º¼ÇÀº
RssItems ¶ó°í ¸í¸íÇϱâ·Î Çß½À´Ï´Ù. Á¦°¡ ºÙÀÎ ¸íĪÀÌ ¸¾¿¡ µéÁö ¾Ê´Â´Ù¸é, ¿©·¯ºÐÀº ¿©·¯ºÐÀÌ ¿øÇϽô À̸§À¸·Î
¸í¸íÇϼŵµ ÁÁÀ» µí ÇÕ´Ï´Ù. ^^
ÀÚ. ±×·³ Á¦°¡ °¢°¢ÀÇ °³Ã¼µéÀÇ Äڵ带 ¾î¶»°Ô ÀÛ¼ºÇß´ÂÁö º¸¿©µå¸®°Ú½À´Ï´Ù. ÀÌ ¹æ¹ýÀÌ °¡Àå ÁÁÀº ¹æ¹ýÀº ¹°·Ð ¾Æ´Ò
°ÍÀÔ´Ï´Ù. Á¦°¡ ÀÛ¼ºÇÑ ÄÚµå´Â »ç½Ç ¼º´ÉÀ» ¸é¹ÐÇÏ°Ô °í·ÁÇÏ¿© ÀÛ¼ºµÈ ÄÚµå´Â ¾Æ´Ï±¸¿ä. ±×³É ÀϹÝÀûÀÎ ¼öÁØÀÇ ÄÚµåÀÏ
»ÓÀ̴ϱî¿ä. ÇÏÁö¸¸, »ç¿ëÇØº¸´Ï ÀÌ Á¤µµÀÇ ÄÚµå·Îµµ ±¦Âú°Ô µ¿ÀÛÇϱ⿡ Àú´Â ÀÌ Äڵ带 »ç¿ëÇϰí ÀÖ½À´Ï´Ù(¾ÆÁÖ ¾à°£ÀÇ ¼öÁ¤À»
ÇØ¼ ¸»ÀÌÁÒ ^^)
ÀÚ. ¿ì¼± º¸¿©µå¸± °ÍÀº RssItem °³Ã¼¿Í RssChannel °³Ã¼ÀÇ ÄÚµåÀÔ´Ï´Ù. Âü°í·Î, ÀúÀÇ °æ¿ì´Â
RssItemÀº ±¸Á¶Ã¼·Î½á ÀÛ¼ºÇØ º¸¾Ò±¸¿ä. RssChannleÀº Ŭ·¡½º·Î ÀÛ¼ºÇØ º¸¾Ò½À´Ï´Ù. À̵éÀº ´Ü¼øÈ÷ µ¥ÀÌÅ͸¦
º¸°üÇϱ⸸ ÇÏ¸é µÇ´Â ³à¼®µéÀ̱⿡, ¾Æ¹«·± ¸Þ¼µå ¾øÀÌ ´Ü¼øÈ÷ Çʵå¿Í ¼Ó¼ºÀ¸·Î¸¸ ±¸¼ºµÇ¾îÁ® ÀÖ½À´Ï´Ù.
public class RssChannel
{
private string title;
private Uri link;
private string description;
private string language;
private string copyright;
private DateTime lastBuildDate;
public string Title
{
get { return title; } set
{ title =
value; }
}
public Uri Link
{
get { return link; } set
{ link =
value; }
}
public string Description
{
get { return description; } set
{ description =
value; }
}
public string Language
{
get { return language; } set
{ language =
value; }
}
public string Copyright
{
get { return copyright; } set
{ copyright =
value; }
}
public DateTime LastBuildDate
{
get { return lastBuildDate; } set
{ lastBuildDate =
value; }
}
}
public struct RssItem
{
public string Author;
public string Category;
public string Title;
public Uri Link;
public DateTime Pubdate;
public string Description;
}
|
±×·¸½À´Ï´Ù. RSS 2.0 ½ºÆå¿¡ ÀÖ´Â ¸ðµç ¿ä¼ÒµéÀ» ´Ù Çʵå·Î ÀÛ¼ºÇÏÁö´Â
¾Ê¾Ò½À´Ï´Ù. ´õ ¿Ïº®ÇÑ ¸®´õ±â¸¦ Á¦ÀÛÇÏ·Á¸é ±×µéÀÇ ¸ñ·ÏÀÌ ¸ðµÎ µé¾îÀÖ¾î¾ß ÇϰÚÁö¸¸, ÀϹÝÀûÀÎ ¼öÁØÀÇ °ÍÀº ±×·¸°Ô±îÁö ¿Ïº®ÇÒ
Çʿ䰡 ¾ø¾îº¸ÀÌ´õ¶ó±¸¿ä. »ç½Ç, ÀÎÅͳݿ¡ ¶°µ¹°í ÀÖ´Â ´ëºÎºÐÀÇ RSS°¡ ±× ½ºÆå¿¡¼ ¿ä±¸ÇÏ´Â ¸ðµç ¿ä¼ÒµéÀ» ±â·ÏÇϰí ÀÖÁöµµ
¾ÊÀº
ÆíÀ̴ϱî¿ä.
ÇØ¼, ÀúÀÇ °æ¿ì´Â º¸ÆíÀûÀ¸·Î ¸¹ÀÌ »ç¿ëÇÏ´Â ¿ä¼Òµé¸¸À» °¡Áø ÄÞÆÑÆ®ÇÑ ¹öÀüÀ» ¸¸µé°í ÀÖ´Â °ÍÀ̶ø´Ï´Ù.
À§ÀÇ Äڵ忡¼ Å©°Ô ¾î·Á¿î Á¡À» ¾ø¾úÀ» °Í °°½À´Ï´Ù. C#À̳ª VB.NETÀ» ¾î´ÀÁ¤µµ °øºÎÇß´Ù¸é Ã¥ÀÇ Ãʹݺο¡ ³ª¿À´Â
À̾߱âµéÀ̴ϱî¿ä. Ŭ·¡½º Á¤ÀÇÇϱâ, ±¸Á¶Ã¼ Á¤ÀÇÇϱâ, ¼Ó¼º Á¤ÀÇÇϱ⠵îµî ¸»ÀÔ´Ï´Ù. ^^;
±×·¸´Ù¸é, ÀÌ¾î¼ Äڵ带 º¸½Ã°Ú½À´Ï´Ù. À̹ø ÄÚµå´Â RssItemÀ» ±×·ìÇÎÇÏ´Â ¿ªÇÒÀ» ´ã´çÇÏ´Â RssImtes Ä÷º¼Ç
Ŭ·¡½ºÀÔ´Ï´Ù. ^^
public class RssItems : CollectionBase
{
public RssItem this[int index]
{
get
{
return (RssItem)List[index];
}
set
{
List[index] = value;
}
}
public int Add(RssItem value)
{
return List.Add(value);
}
public int IndexOf(RssItem value)
{
return List.IndexOf(value);
}
public void Insert(int index, RssItem value)
{
List.Insert(index, value);
}
public void Remove(RssItem value)
{
List.Remove(value);
}
public bool Contains(RssItem value)
{
return List.Contains(value);
}
}
|
RssItems Ä÷º¼ÇÀº CollectionBase¶ó´Â Ŭ·¡½º·ÎºÎÅÍ »ó¼ÓÀ» ¹Þ°í
Àִµ¥¿ä. ÀÌ Å¬·¡½º¸¦ »ç¿ëÇÏ¸é °·ÂÇÑ Çü½ÄÀÇ »ç¿ëÀÚ ÁöÁ¤ Ä÷º¼ÇÀ» ½±°Ô ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ÇØ¼, Ä÷º¼ÇÀ» Á¦ÀÛÇÏ°í ½ÍÀº
°æ¿ì¿¡ ¸¹ÀÌµé »ó¼ÓÀ» ¹Þ´Â Ŭ·¡½ºÀÔ´Ï´Ù. ÀÌ´Â ÀúÀÇ °æ¿ìµµ ¿¹¿Ü´Â ¾Æ´Ï¾î¼¸®.. Àúµµ CollectionBase ·ÎºÎÅÍ
»ó¼ÓÀ» ¹Þ¾Æº¸¾Ò½À´Ï´Ù.
CollectionBase Ŭ·¡½º´Â ³»ºÎÀûÀ¸·Î IList ÀÎÅÍÆäÀ̽º¸¦ ±¸ÇöÇϰí ÀÖÀ¸¸ç, CollectionBase
°³Ã¼ ÀνºÅϽºÀÇ ¿ä¼Ò ¸ñ·ÏÀ» Æ÷ÇÔÇÏ´Â List(IList ÀÎÅÍÆäÀ̽º)¸¦ Á¦°øÇϰí ÀÖ½À´Ï´Ù. ÇØ¼,
CollectionBase Ŭ·¡½º¸¦ »ó¼Ó¹Þ¾Æ¼ ÀÚü Ä÷º¼ÇÀ» ±¸¼ºÇÏ°í ½Í´Ù¸é, IListÀÇ ¸â¹öµéÀ» ±¸ÇöÇØÁÖ´Â °ÍÀÌ
ÁÁ°ÚÁÒ? ±×·¯¸é, °³Ã¼°¡ º¸±â¿¡ ´õ¿í ²Ã·º¼ð ½º·¯¿ï Å״ϱî¿ä
±×¸®°í, Ä÷º¼ÇÀ̶ó¸é Çʼö·Î ÇÊ¿äÇÑ ±â´ÉÀÎ!! Àε¦¼µµ ´Þ¾ÆÁÖ´Â °Ô ÁÁÀ» °ÍÀ̱¸¿ä ^^
ÀÌ·¯ÇÑ ÀÌÀ¯·Î À§¿Í °°ÀÌ Add, Insert, Remove, Contains, IndexOf¿Í °°Àº ³¸¼³Áö ¾ÊÀº
À̸§ÀÇ ¸Þ¼µåµéÀ» Á¤ÀÇÇÑ °ÍÀ̶ø´Ï´Ù. ±×¸®°í, ±× ³»ºÎ ±¸ÇöÀ» À§Çؼ´Â CollectionBase Ŭ·¡½ºÀÇ ¼Ó¼ºÀÎ
List¸¦ Æí¸®ÇÏ°Ô ÀÌ¿ëÇϰí ÀÖ±¸¿ä ^^; (ÀÌ ºÎºÐÀÇ ³»¿ëÀÌ Á¶±Ý ¾î·Æ°Ô ¹Þ¾Æµé¿©Áö½Å´Ù¸é, .NET ¾ð¾î¿¡ ´ëÇÑ ÇнÀÀÌ
Á¶±Ý ÇÊ¿äÇϽŠ°Í °°À¸´Ï, ÃßÈÄ¿¡ ²À º¸ÃæÇнÀ ÇØ ÁÖ¼¼¿ä ^^)
ÀÚ.... ÀÌÁ¦ ±âº»ÀûÀÎ ÇÏÀ§ °³Ã¼µéÀÇ ¼³°è´Â ¾î´ÀÁ¤µµ ¿Ï¼ºµÈ °Í
°°½À´Ï´Ù. ±×·¸´Ù¸é, ÀÌ °³Ã¼µéÀ» Àß Á¶¸³Çؼ ÀÌÁ¦ º»°ÝÀûÀÎ RssReader Ŭ·¡½ºÀÇ ¼³°è·Î µé¾î°¡ º¸°Ú½À´Ï´Ù.
^^;
ÀúÀÇ °æ¿ì´Â ÀÏ´Ü RSS(XML ÆÄÀÏ)¿¡¼ µ¥ÀÌÅ͸¦ Àоî¿Í¼ ±×°ÍÀ» XML °ü·Ã .NET °³Ã¼ÀÎ
XmlDocument¿¡ ·ÎµåÇÑ ´ÙÀ½, ·ÎµåµÈ XML µ¥ÀÌÅ͸¦ RssItem°ú
RssChannel¿¡ ä¿ì´Â ½ÄÀ¸·Î ¼³°èÇØ º¸¾Ò½À´Ï´Ù.
RssReaderÀÇ ´ëÇ¥ÀûÀÎ ¿ÜºÎ·Î °ø°³ÇÒ API·Î´Â Load() ¸Þ¼µå¿Í LoadFromHttp()¸¦ °èȹÇϰí
Àִµ¥¿ä. À̵éÀº °¢°¢ ·ÎÄÿ¡ ÀÖ´Â RSS ÆÄÀÏ È¤Àº ÀÎÅÍ³Ý Àú³Ê¸Ó¿¡ Á¸ÀçÇÏ´Â RSS ÆÄÀÏÀ» °¡Á®¿Í¼ À̸¦ ·ÎµåÇÏ´Â ¿ªÇÒÀ»
¼öÇàÇÕ´Ï´Ù. Áï, ÀÎÀÚ·Î ÁöÁ¤µÈ RSS ÆÄÀÏÀ» Àоî¿Í¼ ±×°ÍÀ» RssReader °³Ã¼¿¡ ·ÎµåÇÏ´Â ¿ªÇÒÀ» ¼öÇàÇÏ°Ô ÇÒ
¿¹Á¤ÀÔ´Ï´Ù. ±×·¯´Ùº¸´Ï, ÀÌ µÎ °³ÀÇ ¸Þ¼µå´Â °øÅëÀûÀÎ ÀÛ¾÷À» ÁøÇàÇÏ°Ô µÇ´Âµ¥¿ä. ±×°ÍÀº ¹Ù·Î, XML ÆÄÀϷκÎÅÍ µ¥ÀÌÅ͸¦
°¡Á®¿Í¼ RssReader °³Ã¼ÀÇ ¼Ó¼º °³Ã¼ÀÎ Channel°ú Items¿¡ ä¿ö³Ö´Â ºÎºÐÀÔ´Ï´Ù. ·ÎÄÿ¡¼ RSS XML
ÆÄÀÏÀ» Àоî¿À´ø, À¥À» ÅëÇØ¼ Àоî¿À´ø ÀÏ´Ü XML ÆÄÀÏÀÌ XmlDocument °³Ã¼¿¡ ·ÎµåµÈ ÈÄ¿¡´Â ±×·ÎºÎÅÍ µ¥ÀÌÅ͸¦
ÃßÃâÇÏ¿© RssReader¸¦ ä¿ì´Â ÀÛ¾÷Àº ÀǽÉÀÇ ¿©Áö¾øÀÌ µ¿ÀÏÇÒÅ״ϱî¿ä. ÇØ¼, ÀÌ ºÎºÐÀº °øÅëµÇ´Â ºÎºÐÀ̱⿡ ³»ºÎÀûÀ¸·Î
º°µµ ÇÔ¼ö(PopulateRssData)·Î »©¼ Á¦ÀÛÇØ º¸¾Ò½À´Ï´Ù.
±×·³, Á¶±Ý º¹ÀâÇØ º¸ÀÏ ¼öµµ ÀÖ°ÚÁö¸¸, Çѹø Á¦°¡ ÀÛ¼ºÇÑ Äڵ带 º¸½Ãµµ·Ï ÇϰڽÀ´Ï´Ù.
public class RssReader
{
private XmlDocument Document;
private XmlNode DocumentRoot;
private RssItems rssItems;
private RssChannel rssChannel;
// »ý¼ºÀÚ. XmlDocument °³Ã¼ »ý¼º ¹× RssItems Ä÷º¼Ç »ý¼º
public RssReader()
{
Document = new XmlDocument();
rssItems = new RssItems();
}
#region [°ø°³ ¼Ó¼ºµé]
// RssItems Ä÷º¼ÇÀ» ¼Ó¼ºÀ¸·Î½á ³ëÃâÇÑ´Ù
public RssItems Items
{
get { return rssItems; }
set { rssItems = value; }
}
// RssChannel °³Ã¼¸¦ ¼Ó¼ºÀ¸·Î½á ³ëÃâÇÑ´Ù
public RssChannel Channel
{
get { return rssChannel; }
set { rssChannel = value; }
}
#endregion
#region [°ø°³ ¸Þ¼µåµé]
// ¿ÜºÎ °ø°³ ¸Þ¼µå. ³»ºÎÀûÀ¸·Î ·ÎÄà XML ÆÄÀÏÀ» ·ÎµåÇÏ´Â LoadFromFile ¸Þ¼µå¸¦ È£ÃâÇϰí,
// ·ÎµåµÈ XML µ¥ÀÌÆ®¸¦ °¡Áö°í, RssReader °³Ã¼¸¦ ä¿ì´Â PopulateRssData ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù
public void Load(string filename)
{
LoadFromFile(filename);
PopulateRssData();
}
// ¿ÜºÎ °ø°³ ¸Þ¼µå. ³»ºÎÀûÀ¸·Î ¿ø°Ý XML ÆÄÀÏÀ» ·ÎµåÇÏ´Â LoadFromUrl ¸Þ¼µå¸¦ È£ÃâÇϰí,
// ·ÎµåµÈ XML µ¥ÀÌÆ®¸¦ °¡Áö°í, RssReader °³Ã¼¸¦ ä¿ì´Â PopulateRssData ¸Þ¼µå¸¦ È£ÃâÇÑ´Ù
public void LoadFromHttp(string Url)
{
LoadFromUrl(Url);
PopulateRssData();
}
// ·ÎÄà XML ÆÄÀÏÀ» XmlDocument¿¡ ·ÎµåÇÑ´Ù
private void LoadFromFile(string filename)
{
Document.Load(filename);
}
// ¿ø°Ý XML ÆÄÀÏÀ» HttpWebRequest, HttpWebResponse¸¦ ÀÌ¿ëÇÏ¿© XmlDocument¿¡ ·ÎµåÇÑ´Ù
private void LoadFromUrl(string Url)
{
HttpWebRequest request;
string responseText = "";
request = (HttpWebRequest)WebRequest.Create(Url);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream, System.Text.Encoding.GetEncoding(949));
responseText = reader.ReadToEnd();
response.Close();
reader.Close();
Document.LoadXml(responseText);
}
#endregion
// ÁöÁ¤µÈ XmlNodeList¿¡¼ ƯÁ¤ À̸§ÀÇ ³ëµå¸¦ ã¾Æ¼ ¹ÝȯÇÑ´Ù
private XmlNode getNode(XmlNodeList list, string nodeName)
{ for
(int i =
0; i < = list.Count - 1; i++)
{
if (list.Item(i).Name == nodeName)
{
return list.Item(i);
}
}
return null;
}
// XmlDocument¿¡¼ µ¥ÀÌÅ͸¦ ÃßÃâÇÏ¿© RssReader °³Ã¼¸¦ ä¿î´Ù
private void PopulateRssData()
{
XmlNode node;
XmlNode itemNode;
//Çì´õ ÃʱâÈ
rssChannel = new RssChannel();
rssChannel.Copyright = "";
rssChannel.Description = "";
rssChannel.Language = "";
rssChannel.Title = "";
DocumentRoot = getNode(Document.ChildNodes, "rss");
DocumentRoot = getNode(DocumentRoot.ChildNodes, "channel");
// Çì´õ°ªµéÀ» ¼³Á¤ÇÏ´Â ºÎºÐ
node = getNode(DocumentRoot.ChildNodes, "title");
if (node != null) rssChannel.Title = node.InnerText;
node = getNode(DocumentRoot.ChildNodes, "link");
if (node != null) rssChannel.Link = new Uri(node.InnerText);
node = getNode(DocumentRoot.ChildNodes, "description");
if (node != null) rssChannel.Description = node.InnerText;
node = getNode(DocumentRoot.ChildNodes, "language");
if (node != null) rssChannel.Language = node.InnerText;
node = getNode(DocumentRoot.ChildNodes, "copyright");
if (node != null) rssChannel.Copyright = node.InnerText;
node = getNode(DocumentRoot.ChildNodes, "lastBuildDate");
if (node != null) rssChannel.LastBuildDate= DateTime.Parse(node.InnerText);
rssItems.Clear();
for (int i = 0; i < = DocumentRoot.ChildNodes.Count - 1; i++)
{
// item ³ëµå¸¦ ·çÇÁ µ¹¸é¼ µ¥ÀÌÅ͸¦ °¡Á®¿Â´Ù
if (DocumentRoot.ChildNodes[i].Name == "item")
{
itemNode = DocumentRoot.ChildNodes[i];
RssItem item = new RssItem();
node = getNode(itemNode.ChildNodes, "author");
if (node != null) item.Author = node.InnerText;
node = getNode(itemNode.ChildNodes, "category");
if (node != null) item.Category = node.InnerText;
node = getNode(itemNode.ChildNodes, "title");
if (node != null) item.Title = node.InnerText;
node = getNode(itemNode.ChildNodes, "link");
if (node != null) item.Link = new Uri(node.InnerText);
node = getNode(itemNode.ChildNodes, "pubDate");
if (node != null) item.Pubdate = DateTime.Parse(node.InnerText);
node = getNode(itemNode.ChildNodes, "description");
if (node != null) item.Description = node.InnerText;
rssItems.Add(item);
}
}
}
}
|
Á¶±Ý¸¸ ½ÅÁßÇÏ°Ô »ìÆìº¸½Ã¸é ÃæºÐÈ÷ ÀÌÇØ°¡ µÉ¸¸ÇÑ ÄÚµåÀÎ °Í °°³×¿ä ^^;; ±×ÃÝ?
(¾ó··¶×¶¥ °°ÀÌ ³Ñ¾î°©´Ï´ç~ È÷È÷)
ÀÚ. ¸ðµÎ ÀÛ¼ºÇÏ¿´À¸¸é ÀÌÁ¦ Çѹø ÀÌ Å¬·¡½º¸¦ ÄÄÆÄÀÏ ÇØº¼±î¿ä? ÀúÀÇ °æ¿î, º°µµÀÇ Å¬·¡½º ¶óÀ̺귯¸® ÇÁ·ÎÁ§Æ®¸¦
¸¸µé¾ú±¸¿ä. RssReader.cs ¶ó´Â Ŭ·¡½º ÆÄÀÏÀ» ¸¸µé¾î¼ À§¿Í °°ÀÌ Äڵ带 ÀÛ¼ºÇØ º¸¾Ò´ä´Ï´Ù. ^^
¾Ñ. Ȥ½Ã ÄÄÆÄÀϽà ¿¡·¯°¡ ³ª½Å´Ù´Â ºÐµéÀ» À§Çؼ ÀÓÆ÷Æ®ÇØ¾ß ÇÒ ³×ÀÓ½ºÆäÀ̽ºµµ Ä£ÀýÇÏ°Ô ¾Ë·Áµå¸®°Ú½À´Ï´Ù. ¹Ù·Î ´ÙÀ½°ú
°°½À´Ï´Ù.
using System;
using System.Collections;
using System.Data;
using System.Web;
using System.IO;
using System.Xml;
using System.Net;
|
±×·¡µµ, ¿¡·¯°¡ ³ª½Å ´Ù´Â ºÐµéÀÌ °è½Ã´Â °Í °°³×¿ä. ±×·¸´Ù¸é, ±×ºÐµéÀ» À§Çؼ ¾Æ¿¹ ¼Ò½º ÆÄÀÏÀ» µå¸®°Ú½À´Ï´Ù.
´Ù¿î·Îµå ¹Þ¾ÆÁÖ¼¼¿ä ^^;;
RssReader°¡ Æ÷ÇÔµÈ Å¬·¡½º ¶óÀ̺귯¸® ´Ù¿î·Îµå
Âü°í·Î, ÀÌ ÇÁ·ÎÁ§Æ®´Â VS.NET 2003À¸·Î Á¦À۵Ǿú½À´Ï´Ù.
VS.NET ÇÏÀ§¹öÀüÀ» ¾²½Ã´Â ºÐÀº Ŭ·¡½º ÆÄÀϸ¸ °¡Á®´Ù°¡ »ç¿ëÇϼ¼¿ä
ÀÌÁ¦ ÄÄÆÄÀϵµ µÇ¾ú°í, RssReader ÄÄÆ÷³ÍÆ®µµ ¿Ï¼ºÀÌ µÇ¾úÁÒ? ±×·¸´Ù¸é, ÀÌ ³à¼®À» Á÷Á¢ Çѹø »ç¿ëÇØ º¸µµ·Ï ÇØ¿ä ^^ ¿©·¯ºÐÀÇ À¥ ÇÁ·ÎÁ§Æ®¿¡´Ù°¡ ºó À¥ Æû ÆäÀÌÁö¸¦ Çϳª Ãß°¡ÇØ ÁÖ¼¼¿ä.
¾î¶² À̸§ÀÇ aspx ¿©µµ ¹«¹æÇÕ´Ï´Ù. ^^; ±×¸®°í, ±× À¥ÆûÀÇ Page_Load À̺¥Æ®¿¡ ´ÙÀ½°ú °°ÀÌ Äڵ带 ÀÛ¼ºÇØ º¸¼¼¿ä ^^
private void Page_Load(object sender, System.EventArgs e)
{
// ¿©±â¿¡ »ç¿ëÀÚ Äڵ带 ¹èÄ¡ÇÏ¿© ÆäÀÌÁö¸¦ ÃʱâÈÇÕ´Ï´Ù.
RssReader reader = new RssReader();
reader.LoadFromHttp("http://www.taeyo.net/lecture/rss.xml");
RssChannel head = reader.Channel;
Response.Write("Title : " + reader.Channel.Title + "<BR>");
Response.Write("Link : " + reader.Channel.Link.ToString() + "<BR>");
Response.Write("Language : " + reader.Channel.Language + "<BR>");
Response.Write("lastBuildDate : " + reader.Channel.LastBuildDate + "<BR>");
Response.Write("Description : " + reader.Channel.Description + "<BR><BR>");
for(int i = 0; i < reader.Items.Count; i++)
{
RssItem item = reader.Items[i];
Response.Write(item.Author + " : " + item.Title + " (" + item.Pubdate.ToString() +")<BR>");
}
}
|
±×¸®°í, ÀÌ À¥ ÆäÀÌÁö¸¦ ½ÇÇàÇØ º¸¾Æ¿ä. ¹°·Ð, ½ÇÇà Àü¿¡ ¾Õ¿¡¼ ¸¸µç TaeyoWebLib.dllÀ» ÇÁ·ÎÁ§Æ®¿¡¼ ÂüÁ¶Çϰí ÀÖ¾î¾ß Çϰí, using TaeyoWebLib¸¦ ÅëÇØ¼
³×ÀÓ½ºÆäÀ̽º¸¦ ÀÓÆ÷Æ®ÇØ¾ßÇÏ´Â °ÍÀº ÀØÁö ¾ÊÀ¸¼Ì¾î¾ß Á¦´ë·Î ½ÇÇàµÉ °ÍÀÔ´Ï´Ù. ^^
¾î¶²°¡¿ä? ¸ÚÁö°Ô ´Ù¸¥ À¥ »çÀÌÆ®ÀÇ RSS¸¦ °¡Á®¿Í¼ Ãâ·ÂÇØÁÖ°í ÀÖ³ª¿ä? Å¿À »çÀÌÆ®°¡ ¾Æ´Ñ ´Ù¸¥ »çÀÌÆ®ÀÇ RSSµµ Çѹø Àоî¿Í º¸¼¼¿ä.
¾î´ÀÁ¤µµ ¸¸Á·ÇÒ¸¸ÇÑ ¼öÁØÀ¸·Î µ¿ÀÛÇÏÁö ¾Ê³ª¿ä? È÷È÷... Àç¹ÌÀÖÁÒ?
»ç½Ç, ½ÇÁ¦ Á¦°¡ »ç¿ëÇÏ´Â RssReader Ŭ·¡½ºÀÇ °æ¿ì¿¡´Â Á¶±Ý ´õ ¾ç³äÀ» ÃÄ º¸¾Ò´Âµ¥¿ä. ±×·¯´Ï±ñ, °í¹éÇÏÀÚ¸é ÀúÀÇ °æ¿ì´Â
RssItems Ä÷º¼ÇÀÇ µ¥ÀÌÅ͸¦ DataSetÀ¸·Î ¹ÝȯÇÏ´Â ¸Þ¼µå¸¦ Ãß°¡·Î ³Ö¾îµÎ¾ú½À´Ï´Ù. ÇØ¼, ½±°Ô DataGrid¿Í °°Àº ¹Ù¿îµå ÄÁÆ®·Ñ¿¡
½±°Ô ¹ÙÀε尡 °¡´ÉÇϰԲû ¸»ÀÌÁö¿ä ^^;; ÀÌ ºÎºÐÀº ¿©·¯ºÐÀÌ Çѹø ½º½º·Î Ãß°¡ÇØ º¸½Ã°Ú¾î¿ä? ±×¸®°í, ¸¸ÀÏ, µµÀúÈ÷ ¾ÈµÇ°Ú´Ù ÇϽô ºÐµéÀ» À§Çؼ´Â
ÈùÆ®¸¦ µå¸±²²¿ä. ±×°ÍÀº... ÇöÀç ÆäÀÌÁö¿¡¼ [¼Ò½ºº¸±â]¸¦ ÇÏ½Ã¸é µË´Ï´Ù. ÈùÆ®´Â ¿©±â±îÁö~~ ^^
±×¸®°í, ÀÌ·¯ÇÑ ÄÄÆ÷³ÍÆ®¸¦ »ç¿ëÇÒ °æ¿ì Á¶½ÉÇØ¾ß ÇÒ »çÇ×ÀÌ ÀÖ¾î¼ ¾Ë·Áµå¸®´Âµ¥¿ä. ±×°ÍÀº RSS¸¦ ÅëÇØ¼ µ¥ÀÌÅ͸¦ Àоî¿Í¼ ÀÚ½ÅÀÇ À¥ »çÀÌÆ®¿¡¼ ¹«´ÜÀ¸·Î ¸µÅ©¸¦ °É¾î¼´Â ¾ÈµÈ´Ù´Â °ÍÀÔ´Ï´Ù. ¿¹¸¦ µé¾î¼,
¿©·¯ºÐÀÌ Å¿À»çÀÌÆ®¿¡¼ Á¦°øÇÏ´Â RSS¸¦ Àоî¼, ¿©·¯ºÐÀÇ »çÀÌÆ®¿¡¼ ±× ¸®½ºÆ®¸¦ ³ª¿ÇÏ°í ¸µÅ©¸¦ °É°í ½Í´Ù°í ÇØµµ, ±×·¸°Ô ÇÏ·Á¸é
¿ì¼±ÀûÀ¸·Î ÇØ´ç »çÀÌÆ®ÀÇ °ü¸®ÀÚ¿¡°Ô µ¿ÀǸ¦ ¹ÞÀ¸¼Å¾ß ÇÕ´Ï´Ù. ¸¸ÀÏ, ±×·¸°Ô ÇÏÁö ¾ÊÀ» °æ¿ì¿¡´Â Â÷ÈÄ ¾î¶°ÇÑ ºÒÀÌÀÍÀÌ ¿ÃÁö ¸ð¸£´Ï±î¿ä.
»õ·Î¿î Å¿À´å³Ý »çÀÌÆ®ÀÇ ¸ÞÀο¡´Â Microsoft°¡ Á¦°øÇÏ´Â MSDNÀÇ ¸ñ·ÏÀ» ¸µÅ©¸ñ·ÏÀ¸·Î Ãâ·ÂÇÏ´Â °ÍÀ» º¸½Ç ¼ö ÀÖÀ»ÅÙµ¥¿ä.
±× ºÎºÐÀÌ ¹Ù·Î Áö±Ý °°ÀÌ ¸¸µé¾î º» RssReader¸¦ »ç¿ëÇØ¼ ±¸ÇöÇÑ °ÍÀÔ´Ï´Ù¸¸,
ÀúÀÇ °æ¿ì´Â ±×°ÍÀ» ¸µÅ©Çϱâ À§Çؼ Microsoft¿¡ »ç¿ëµ¿ÀÇ ¿äûÀ» Çß¾ú±¸¿ä. º¸¸§ Á¤µµÀÇ ½Ã°£ÀÌ °É·Á¼ °á±¹Àº ½Â³«À» ¾ò¾î³Â±â¿¡
¸µÅ©¸¦ Çϰí ÀÖ´Â °ÍÀ̶ø´Ï´Ù. (º¸¸§Àº ³»°Ô ³Ê¹« ±æ¾ú¾î.. ¤Ð¤Ð ÇÏÁö¸¸, ´ÙÇàÀ̾ß.. )
ÀÌ ºÎºÐÀº ÁÖÀÇÇØ ÁÖ¼¼¿ä ^^;; ´ëºÎºÐÀÇ °æ¿ì, Ưº°ÇÑ ÀÌÀ¯°¡ ¾ø´ÂÇÑÀº ¾Æ¸¶µµ ´Ùµé µ¿ÀÇÇØ ÁÙÅ×´Ï, ³Ê¹« °ÆÁ¤ÇÏÁö ¸¶½Ã°í,
»ç¿ëµ¿ÀÇ ¿äû ¸ÞÀÏÀ» º¸³»º¸¼¼¿ä ^^
ÀÚ~ ±×·³, Àú´Â ´ÙÀ½ ½Ã°£¿¡ RssWriter ¸¸µé±â °Á¸¦ °¡Áö°í ´Ù½Ã ã¾Æ¿À°Ú½À´Ï´Ù.^^.. ¾Æ¸¶ ±×¶§Áò¿¡´Â »õ·Î¿î Å¿À´å³Ý »çÀÌÆ®¿¡¼
°Á¸¦ º¸½Ç ¼öµµ ÀÖÀ» °Í °°³×¿ä.
¿À´Ãµµ ÁÁÀº ÇÏ·ç µÇ¼¼¿ä. ÀоîÁּż °¨»çÇÕ´Ï´Ù.
°Á ¸ñ·ÏÀ¸·Î..
|