OK,现在一个伸张名为aspx的xml文件已经建立好了,若是它的数径为www.b.com/news.aspx

 

先验证一下,七个网站域名为a.com和b.com,a.com是b.com的分站,它们的情报是共享的,就是相同的,所以没要求在a.com数据库里再重新插入一批数量了。

缓解方案:在b.com里建立一个绽放的XML文件,供a.com访问,那样做是高枕无忧的,可行的。

首先,为了安全起见,服务器的SQLSERVER不开放远程访问,这样,大家有二种方案可以选拔,其一就是webservice,其二就是比较简单的XML,前几天我首要讲XML。

好了,上面四个程序就是a.com上面的,它们将从b.com的news.aspx页面下得到最新的新闻列表

先是在b.com里创造那样一个生成XML的文件:

 

 public partial class _Default : System.Web.UI.Page

    {

        int rCount = 10;

        int channelId = 1;

        int classId = 1;

 

        protected void Page_Load(object sender, EventArgs e)

        {

            this.rCount    = Request.QueryString.AllKeys.Contains("r") ?                             int.Parse(Request.QueryString["r"].Trim()) : this.rCount;

            this.channelId = Request.QueryString.AllKeys.Contains("ch") ?

                             int.Parse(Request.QueryString["ch"]) : this.channelId;

            this.classId   = Request.QueryString.AllKeys.Contains("cl") ?                            int.Parse(Request.QueryString["cl"]) : this.classId;

 

            CreateXML();

        }

 

        /// <summary>

        /// 从数据库中提取数据,生成XML文件

        /// </summary>

        /// <returns></returns>

        public string CreateXML()

        {

            Response.Clear(); //删除所有缓存中的HTML输出

            Response.ContentType = "text/xml";

            // (ContentType 属性指定响应的 HTTP 内容类型) 页面类型为xml,默认为HTML,

            常见的还有image/GIF 和image/JPEG

 

            System.Data.DataSet data = B2ceduData.Data.B2cData.News(this.rCount, 

            this.channelId, this.classId);

            if (data != null)

            {

                data.WriteXml(Response.OutputStream);

            }

 

            Response.Flush();//立即发送缓冲区中的输出(只有编译产生了至少256字节的数据,

                             才能在执行Response.Flush()以后将信息发到客户端并显示)

            Response.End();

 

            return data.GetXml();

        }

    }

}

 

下面程序接上面的,从b.com数据库里取出新闻列表

    public static class B2cData

    {

        /// <summary>

        /// 获取热门课程列表XML

        /// </summary>

        /// <param name="RowCount">数据行数</param>

        /// <param name="ChannelID">频道ID</param>

        /// <param name="ClassID">分类ID</param>

        /// <returns></returns>

        public static DataSet News(int RowCount, int ChannelID, int ClassID)

        {

            return News(RowCount, ChannelID, ClassID, DBConnectionHelper.ConnString);

        }

 

        /// <summary>

        /// 获取热门课程列表XML

        /// </summary>

        /// <param name="RowCount">数据行数</param>

        /// <param name="ChannelID">频道ID</param>

        /// <param name="ClassID">分类ID</param>

        /// <param name="ClassID">数据库连接字</param>

        /// <returns></returns>

        public static DataSet News(int RowCount, int ChannelID, int ClassID, string connStr)

        {

            try

            {

                System.Text.StringBuilder sql = new System.Text.StringBuilder();

                sql.Append(@"SELECT ");

                sql.Append(RowCount == 0 ? "" : string.Format("TOP {0} ", RowCount));

                sql.Append(@"a.ArticleID,a.ChannelID,a.ClassID,a.Title,a.Subheading,

                             a.UpdateTime,a.CreateTime,a.LinkUrl,a.ChannelDir ");

                sql.Append(@"FROM PE_Article a LEFT OUTER JOIN PE_Channel b ON                              a.ChannelID=b.ChannelID ");

                sql.Append(@"WHERE   ");

                sql.Append(string.Format(@" a.ChannelID={0} ", ChannelID));

                sql.Append(string.Format(@"AND a.ClassID={0} ", ClassID));

                sql.Append(@"ORDER BY A.UPDATETIME DESC");

                DataSet ds = DBHelper.SELECT(sql.ToString(), connStr);

                ds.DataSetName = DBConnectionHelper.InitialCatalog;

                ds.Tables[0].TableName = "PE_Article";

                return ds;

            }

            catch

            {

                return null;

            }

        }

 

    }
 public partial class FromXmlGetDatum : System.Web.UI.Page

    {

        Web.Service.NewsService webRequest = null;

        System.Text.StringBuilder html;

        const int MAXROW = 10;

        public FromXmlGetDatum()

        {

            this.webRequest = new Web.Service.NewsService();

        }

 

        protected void Page_Load(object sender, EventArgs e)

        {

            GetLatestNews("5.1", "1");

            Response.Write(html);

        }

 

        // 获取最新资讯

        void GetLatestNews(string id, string newsCategoryID)

        {

            html = new System.Text.StringBuilder();

            html.Append("<div id=\"list_" + id.Replace(".", "") + "_1\" class=\"conn\"                          style=\"display:block;\">");

            html.Append("<table width=\"660\" border=\"0\" cellspacing=\"1\" 

                         cellpadding=\"2\" bgcolor=\"#e9e9e9\" style=\"float:left;\">");

            if (!string.IsNullOrEmpty(newsCategoryID))

            {

                List<Web.Service.XMLLastestNews> datas = this.webRequest.        RequestData(newsCategoryID, MAXROW).Cast<Web.Service.XMLLastestNews>().ToList();

 

                if (datas.Count > 0)

                {

                    foreach (var item in datas)

                    {

                        html.Append("<tr bgcolor=\"#FFFFFF\"><td><a href='" +  item.LinkUrl + "/" + Convert.ToDateTime(item.CreateTime).ToString("yyyyMM") + "/" + item.ChannelDir + "_" + item.ArticleID + ".shtml' target='_blank'>" +  item.Title + "</a></td><td>"+item.CreateTime+"</td><td>"+item.Subheading+"</td></tr>");

                    }

                }

                else

                {

                    html.Append("<tr bgcolor=\"#FFFFFF\"><td width=\"100%\"></td></tr>");

                }

            }

            else

            {

                html.Append("<tr bgcolor=\"#FFFFFF\"><td width=\"100%\"></td><td></td><td></td></tr>");

            }

            html.Append("</table>");

            html.Append("</div>");

        }

 

    }
namespace Web.Service

{

 

    public class NewsService

    {

 

        const string REQUESTURL = "http://www.b.com/news.aspx?ch={0}&cl=1&r={1}"; //从这个XML文件里获取数据

 

        #region IWebRequestService 成员

        /// <summary>

        /// 将XML对象转换为LIST实体返回

        /// </summary>

        /// <param name="id"></param>

        /// <param name="num"></param>

        /// <returns></returns>

        public List<IWebRequestEntity> RequestData(string id, int num)

        {

            List<XMLLastestNews> data;

            System.Xml.Linq.XElement xdoc = System.Xml.Linq.XElement.Load(                                            string.Format(REQUESTURL, id, num));

            var items = xdoc.Descendants("PE_Article").Select(item =>

   new Web.Service.XMLLastestNews

                                         {

   ArticleID = item.Element("ArticleID").Value,

                                        ChannelID = item.Element("ChannelID").Value,

  ClassID = item.Element("ClassID").Value,

                                        Subheading = "",

                                        Title = item.Element("Title").Value,

                                        UpdateTime = item.Element("UpdateTime").Value,

                                        CreateTime = item.Element("CreateTime").Value,

                                        LinkUrl = item.Element("LinkUrl").Value,

                                        ChannelDir = item.Element("ChannelDir").Value,

                                                                          }

                                                                  );

            data = items.ToList();

            return data.Cast<IWebRequestEntity>().ToList();

        }

 

        #endregion

    }

}

相关文章

网站地图xml地图