2012-06-25 3 views
4

안녕하세요, Visual C# Express에서 RSS 리더를 만들려고합니다. 양식이로드 될 때 rss 피드를 텍스트 상자로 읽어야합니다. RSS 전에 피드와 내가 건너 한 모든 예는 비주얼 스튜디오에서 완료와 나는 일한 적이있다 그리고 내가 이것을 사용하지 못할 것으로 보인다 :Visual C# Express Edition의 RSS 리더

 (XmlReader reader = XmlReader.Create(Url)) 

이것은 내가 지금까지 가지고 것입니다. 작동하지 않습니다.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Net; 

namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     var s = RssReader.Read("http://ph.news.yahoo.com/rss/philippines"); 
     textBox1.Text = s.ToString(); 
    } 
    public class RssNews 
    { 
     public string Title; 
     public string PublicationDate; 
     public string Description; 
    } 

    public class RssReader 
    { 
     public static List<RssNews> Read(string url) 
     { 
      var webResponse = WebRequest.Create(url).GetResponse(); 
      if (webResponse == null) 
       return null; 
      var ds = new DataSet(); 
      ds.ReadXml(webResponse.GetResponseStream()); 

      var news = (from row in ds.Tables["item"].AsEnumerable() 
         select new RssNews 
         { 
          Title = row.Field<string>("title"), 
          PublicationDate = row.Field<string>("pubDate"), 
          Description = row.Field<string>("description") 
         }).ToList(); 
      return news; 
     } 
    } 

내가 무엇을해야할지 잘 모르겠다. 도와주세요.

+0

텍스트 상자에 무엇을 표시 하시겠습니까? XML 또는 다른 것을 반환 했습니까? – Habib

+0

예, RSS 피드의 텍스트를 표시하고 싶습니다 –

답변

2

RSSNews 항목 목록을 반환하지만 코드를 잘못된 방식으로 텍스트 상자에 지정 했으므로 코드가 예상대로 작동합니다. 결과적으로 textBox1.Text = s.ToString();을 입력하면 System.Collections.Generic.List....이 표시됩니다.

귀하의 방법은 데이터 세트에서 RssNews 항목을 읽고 피드에 대해 약 23 개의 항목을 반환합니다. 이러한 항목을 반복하고 텍스트를 텍스트 상자에 표시하거나 GridView 또는 이와 유사한 컨트롤을 사용하여 이러한 결과를 표시해야하는 경우 더 좋습니다.

당신은 당신의 Main 방법에 다음 코드를 시도 할 수 있습니다 :

 var s = RssReader.Read("http://ph.news.yahoo.com/rss/philippines"); 
     StringBuilder sb = new StringBuilder(); 
     foreach (RssNews rs in s) 
     { 
      sb.AppendLine(rs.Title); 
      sb.AppendLine(rs.PublicationDate); 
      sb.AppendLine(rs.Description); 
     } 

     textBox1.Text = sb.ToString(); 

이 RssNews의 각 항목에 대한 문자열을 만들 것이며을 textBox1에 결과를 표시합니다.

+0

생명의 은인 .. 감사합니다 !!!!! –

+0

@Sindu_, 오신 것을 환영합니다. – Habib

+0

@ 하비브 여기에 어떤 방법을 사용합니까? – envyM6