4

こんにちは私はビジュアルC#ExpressでRSSリーダーを作成しようとしています。フォームが読み込まれたときに、RSSフィードをテキストボックスに読み込む必要があります。私はこれまでRSSフィードを使用したことがなく、出くわしたすべての例はVisual Studioで行われており、これを使用できないようです。

       (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;
        }
    }

どうしたらいいのかわからない。助けてください。

4

1 に答える 1

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 に表示されます。

于 2012-06-25T04:47:40.683 に答える