您的位置:首页 > 其它

阅读rss的其中一个主页面的程序,最近写的,多多指教

2007-01-05 22:17 447 查看
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Threading;
using System.Xml;
using System.Data.OleDb;

public partial class admin_readrss : System.Web.UI.Page
{

protected void Page_Load(object sender, EventArgs e)
{
string linkxml;
string name;
DateTime times;
Session["count"] = 0;
Session["pass"] = 0;
Session["rsscount"] = 0;
Session["rsspass"] = 0;
try{
linkxml = Request["linkxml"];
name = Request["name"];
times=Convert.ToDateTime(Request["times"]);
reedrss(linkxml,name,times);
//如果没传入url,就是全部的重新更新
}
catch
{
readevery();
}
Response.Write("共更新的blog网站为:"+Session["rsscount"].ToString()+"个<br />");
Response.Write("更新失败的blog为:" + Session["rsspass"].ToString() + "个<br />");
Response.Write("共更新记录:"+Session["count"]+"条 .");
Response.Write("抛弃记录:"+Session["pass"]+"条");
// Thread.Sleep(10000);
}
private XmlNode FoundChildNode(XmlNode Node, string Name)
{
XmlNode childlNode = null;
for (int i = 0; i < Node.ChildNodes.Count; i++)
{
if (Node.ChildNodes[i].Name == Name && Node.ChildNodes[i].ChildNodes.Count > 0)
{
childlNode = Node.ChildNodes[i];
return childlNode;
}
}
return childlNode;
}
protected void readevery()
{
OleDbConnection mycon = DB.CreateDB();
DataSet myset = new DataSet();
string sqlstr="select * from blogrss";
mycon.Open();
OleDbDataAdapter myadt = new OleDbDataAdapter(sqlstr,mycon);
myadt.Fill(myset,"rsses");
for (int i = 0; i < myset.Tables["rsses"].Rows.Count; i++)
{
string xmlstr = myset.Tables[0].Rows[i]["linkxml"].ToString();
string name=myset.Tables["rsses"].Rows[i]["author"].ToString();
DateTime time =Convert.ToDateTime( myset.Tables["rsses"].Rows[i]["lastupdatetime"]);
if (isuse(xmlstr))
{
reedrss(xmlstr, name, time);
Session["rsscount"]=Convert.ToInt32(Session["rsscount"])+1;
}
else
{
Session["rsspass"] = Convert.ToInt32(Session["rsspass"]) + 1;
}
}
mycon.Close();
}
//测试链接是否可用
protected bool isuse(string xmlurl)
{
XmlTextReader Reader = new XmlTextReader(xmlurl);
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.Load(Reader);
xmlDoc.RemoveAll();
return true;
}
catch (Exception x)
{

xmlDoc.RemoveAll();
return false;
}
}
protected void reedrss(string url,string name,DateTime lastupdate)
{
string URL = url;
int xx=0;//记录是不是第一次读取日期
XmlTextReader Reader = new XmlTextReader(URL);

XmlValidatingReader Valid = new XmlValidatingReader(Reader);

Valid.ValidationType = ValidationType.None;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Reader);

XmlNode rssNode = FoundChildNode(xmlDoc, "rss");
XmlNode channelNode = FoundChildNode(rssNode, "channel");
rss.Channel channel = new rss.Channel();
//------------------------------------------
OleDbConnection mycon = DB.CreateDB();
string sqlstr;
// mycon.Open();
OleDbCommand mycmd = new OleDbCommand();
mycmd.Connection = mycon;

//------------------------------------------
channel.Items = new Hashtable();
int i = 0;
for (i = 0; i < channelNode.ChildNodes.Count; i++)
{
rss.Item itemss;

switch (channelNode.ChildNodes[i].Name)
{

case "title":
{
channel.Title = channelNode.ChildNodes[i].InnerText;

break;
}
case "link":
{
channel.link = channelNode.ChildNodes[i].InnerText;

break;
}

case "item":
{

int j = 0;
itemss.Link = "";
itemss.author = "";
itemss.Description = "";
itemss.guid = "";
itemss.pubDate = "";
itemss.Title = "";

for (j = 0; j < channelNode.ChildNodes[i].ChildNodes.Count; j++)
switch (channelNode.ChildNodes[i].ChildNodes[j].Name.ToString().Trim())
{
case "title":
{
itemss.Title = channelNode.ChildNodes[i].ChildNodes[j].InnerText;

break;
}
case "link":
{
itemss.Link = channelNode.ChildNodes[i].ChildNodes[j].InnerText;

break;
}

case "guid":
{
itemss.guid = channelNode.ChildNodes[i].ChildNodes[j].InnerText;

break;
}
case "pubDate":
{

itemss.pubDate = channelNode.ChildNodes[i].ChildNodes[j].InnerText;
string times=itemss.pubDate;
if (itemss.pubDate.Length > 28)
{

times = itemss.pubDate.Substring(0, itemss.pubDate.Trim().Length - 2).Trim();

}
if (xx == 0)
{
sqlstr = "update blogrss set lastupdatetime=@lastupdatetime where linkxml='" + url + "'";
//sqlstr = "update blogrss set lastupdatetime="+Convert.ToDateTime(itemss.pubDate).ToShortDateString()+" where linkxml='"+url+"'";
//sqlstr = "update blogrss set lastupdatetime="+DateTime.Now.ToShortDateString()+" where linkxml='" + url + "'";
mycon.Open();
mycmd.Parameters.Add("@lastupdatetime", OleDbType.Date);
// mycmd.Parameters["@lasttime"].Value = Convert.ToDateTime(itemss.pubDate);
mycmd.Parameters["@lastupdatetime"].Value = Convert.ToDateTime(times);
mycmd.CommandText = sqlstr;
mycmd.ExecuteNonQuery();
mycon.Close();
}
xx++;
break;
}
case "author":
{
itemss.author = channelNode.ChildNodes[i].ChildNodes[j].InnerText;

break;
}
case "description":
{

itemss.Description = channelNode.ChildNodes[i].ChildNodes[j].InnerText;

break;

}

}
string time123 = itemss.pubDate;
if (itemss.pubDate.Length > 28)
{

time123 = itemss.pubDate.Substring(0, itemss.pubDate.Trim().Length - 2).Trim();

}
if ( Convert.ToDateTime(time123)<=lastupdate)
{
Session["pass"] = Convert.ToInt32(Session["pass"]) + 1;
break;
}
if (itemss.Link == "")
{
itemss.Link = itemss.guid;
}
if (itemss.author == "" || itemss.Description == "" || itemss.Link == "" || itemss.pubDate == "")
{
Session["pass"] = Convert.ToInt32(Session["pass"]) + 1;
break;
}
sqlstr = "insert into artcle(pubDate,title,author,site,description,author_ID)values(@pubDate,@title,@author,@site,@description,'" + name + "')";
mycmd.CommandText = sqlstr;
// mycmd.Connection = mycon;
mycmd.Parameters.Add("@pubDate", OleDbType.Date);
if (itemss.pubDate.Length > 28)
{
string datestr = itemss.pubDate.Substring(0, itemss.pubDate.Length - 6).Trim();
mycmd.Parameters["@pubDate"].Value = Convert.ToDateTime(datestr);
}
else
{
mycmd.Parameters["@pubDate"].Value = Convert.ToDateTime(itemss.pubDate);
}
//1
mycmd.Parameters.Add("@title", OleDbType.LongVarChar);
mycmd.Parameters["@title"].Value = itemss.Title;
//2
mycmd.Parameters.Add("@author", OleDbType.LongVarChar);
mycmd.Parameters["@author"].Value = itemss.author;
//3
// mycmd.Parameters.Add("@pubDate",OleDbType.Date);
//if (itemss.pubDate.Length > 28)
// {
// string datestr = itemss.pubDate.Substring(0, itemss.pubDate.Length - 6).Trim();
// mycmd.Parameters["@pubDate"].Value = Convert.ToDateTime(datestr);
// }
//else
//{
// mycmd.Parameters["@pubDate"].Value = Convert.ToDateTime(itemss.pubDate);
//}
//4
mycmd.Parameters.Add("@site",OleDbType.LongVarChar);
mycmd.Parameters["@site"].Value = itemss.Link;
//5
mycmd.Parameters.Add("@description",OleDbType.VarChar);
mycmd.Parameters["@description"].Value = itemss.Description;
//
mycon.Open();
mycmd.ExecuteNonQuery();
Session["count"] = Convert.ToInt32(Session["count"]) + 1;
mycon.Close();
break;
}
}
}

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