嗨,我正在尝试在Visual C#express中创建一个RSS阅读器.我需要在表单加载时将rss feed读入文本框.我之前从未使用过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;
}
}
我不知道该怎么做.请帮忙.
最佳答案 那么你的代码正在按预期工作,因为你正在返回一个RSSNews项目列表,但是你以错误的方式将它分配给文本框.做textBox1.Text = s.ToString();将给出System.Collections.Generic.List ….作为结果.
您的方法是从数据集中读取RssNews项目,并针对Feed返回大约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中显示结果.