您的位置:首页 > 编程语言 > C#

c# 获取Rss数据

2012-11-30 08:18 302 查看
public class Channel
{
private string _title;
private string _link;
private string _description;
private List<Item> items = new List<Item>();

#region 属性
/**//// <summary>
/// 标题
/// </summary>
public string title
{
get{return _title;}
set{_title = value.ToString();}
}
/**//// <summary>
/// 链接
/// </summary>
public string link
{
get{return _link;}
set{_link = value.ToString();}
}
/**//// <summary>
/// 描述
/// </summary>
public string description
{
get{return _description;}
set{_description = value.ToString();}
}
public List <Item > Items
{
get { return items; }
}
#endregion

public Channel(){}

}//


  

public class Feed
{
private string _url;
private System.DateTime _lastModified;
private System.DateTime _lastRssDate;
private Channel channel = new Channel();

#region 公共属性
public string url
{
get{return _url;}
set{_url=value;}
}
public System.DateTime lastModified
{
get{return _lastModified;}
}
public System.DateTime lstRssDate
{
set{_lastRssDate=value;}
}
public Channel Channel
{
get { return channel; }
}

#endregion

public Feed()
{
}

public Feed(string url,System.DateTime dt)
{
this._url=url;
this._lastRssDate=dt;

}

public void Read()
{
XmlDocument xDoc=new XmlDocument();
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(_url);
request.Timeout=15000;
request.UserAgent=@"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.40607; .NET CLR 1.1.4322)";
Stream stream;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
this._lastModified = response.LastModified;
stream = response.GetResponseStream();
StreamReader sr;
//System.Xml.XmlReader = new XmlReader();
//stream=Encoding.Convert(Encoding.GetEncoding("GBK"),Encoding.GetEncoding("gb2312"),Convert.ToSByte(stream));
if(this.Get_CH(response.Headers["Content-Type"].ToString())=="GBK")
{
sr= new StreamReader(stream,System.Text.Encoding.GetEncoding("GB2312"));
xDoc.Load(sr);
}
else
{
//                sr= new StreamReader(stream,System.Text.Encoding.UTF8);
xDoc.Load(stream);
}

if(this._lastRssDate<this._lastModified)
{
XmlNodeList xnList=xDoc.DocumentElement["channel"].SelectNodes("item");
//                XmlNodeList xnList=xDoc.SelectNodes("items");
int a= xnList.Count;
foreach(XmlNode xNode in xnList)
{

Item rt=new Item();
rt.title=xNode.SelectSingleNode("title").InnerText.Replace("'","''");
rt.link=xNode.SelectSingleNode("link").InnerText.Replace("'","''");
try
{
rt.description = xNode.SelectSingleNode("description").InnerText.Replace("'", "''");
}
catch { }
try
{
rt.pubDate=xNode.SelectSingleNode("pubDate").InnerText;
}
catch
{
rt.pubDate=this._lastModified.ToString();
}
channel.Items.Add(rt);
}
}
}

public string Create()
{
return "";
}

private string Get_CH(string s)
{
int l=s.IndexOf("charset=")+8;
return s.Substring(l,s.Length-l);
}

}//


  

public class Item
{
private string _title="";
private string _link="";
private string _description="";
private string _pubDate="";

#region 属性

/**//// <summary>
/// 标题
/// </summary>
public string title
{
get{
if (_title.Length > 21)
{
return _title.Substring(0, 21)+"...";

}
else
{return _title; }

}
set{

_title=value.ToString();}
}
/**//// <summary>
/// 链接
/// </summary>
public string link
{
get{return _link;}
set{_link=value.ToString();}
}
/**//// <summary>
/// 描述
/// </summary>
public string description
{
get{return _description;}
set
{
if (value != null)
{ _description = value; }
else
{ _description = ""; }
}
}
/**//// <summary>
/// 频道内容发布日期
/// </summary>
public string pubDate
{
get{return _pubDate;}
set{_pubDate=C_Date(value);}
}

#endregion

public Item(){}

private string C_Date(string input)
{
System.DateTime dt;
try
{
dt=Convert.ToDateTime(input);
}
catch
{
dt=System.DateTime.Now;
}
return dt.ToString();
}
string  GetDate(DateTime  dt)
{    string House = dt.ToString("HH");
int hour = int.Parse(House);
int mine = dt.Minute;
int second = dt.Second;
string AP = "";

if(hour >12)
{
AP="下午";
hour = hour - 12;
}
else
{AP="上午";}

return   string.Format("{0} {1} {2}",  dt.ToString ("yyyy/MM/dd"),AP,hour +":"+mine +":"+second );
}
public string DateString
{
get
{
DateTime time = Convert.ToDateTime(pubDate);

return GetDate(time);
}
}

public DateTime PuDate
{
get { return Convert.ToDateTime(pubDate); }

}

}//


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: