1. 程式人生 > >asp.net 讀取資料庫生成百度sitemap_baidu.xml和谷歌

asp.net 讀取資料庫生成百度sitemap_baidu.xml和谷歌

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.Data;
using System.Data.OleDb;
using System.Web;

namespace IWMS_Plugin
{
    public class setSEXml : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        public void toBaiDuXml(Object o, EventArgs e)
        {
            toBaiDuXml(getTb());
        }

        private DataRow[] getTb()
        {
            string cmdText = "SELECT articleid,title,classid,dateandtime FROM iwms_news WHERE dateandtime>[@dateandtime] ORDER BY dateandtime DESC ";
            OleDbParameter p = new OleDbParameter("@dateandtime", typeof(System.String));
            p.Value = DateTime.Now.AddDays(-7).ToString();
            OleDbParameter[] ps = new OleDbParameter[] { p };
            DataSet ds = DABase.GetDataSet(cmdText, ps, "Topics");
            return ds.Tables[0].Select();
        }

        public void toGoogleXml(Object o, EventArgs e)
        {
            toGoogleXml(getTb());
        }

        public void toBaiDuXml(DataRow[] rows)
        {
            XmlDocument xmlDoc = new XmlDocument();
            XmlDeclaration declareation;
            declareation = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
            xmlDoc.AppendChild(declareation);

            XmlElement xeRoot = xmlDoc.CreateElement("document");
            xeRoot.SetAttribute("xmlns:bbs", "http://www.baidu.com/search/bbs_sitemap.xsd");
            xmlDoc.AppendChild(xeRoot);

            XmlNode root = xmlDoc.SelectSingleNode("document");

            XmlElement webSite = xmlDoc.CreateElement("webSite");
            webSite.InnerText = "***";
            root.AppendChild(webSite);

            XmlElement webMaster = xmlDoc.CreateElement("webMaster");
            webMaster.InnerText = "
[email protected]
";
            root.AppendChild(webMaster);

            XmlElement updatePeri = xmlDoc.CreateElement("updatePeri");
            updatePeri.InnerText = "168";
            root.AppendChild(updatePeri);

            XmlElement updatetime = xmlDoc.CreateElement("updatetime");
            updatetime.InnerText = DateTime.Now.ToString();
            root.AppendChild(updatetime);

            XmlElement version = xmlDoc.CreateElement("version");
            version.InnerText = "Iwms Plugin by 蟄伏的蟲";
            root.AppendChild(version);

            foreach (DataRow row in rows)
            {
                string articleid=row["articleid"].ToString();
                string title = row["title"].ToString();
                string classid = row["classid"].ToString();
                string dateandtime = row["dateandtime"].ToString();

                XmlElement item = xmlDoc.CreateElement("item");
                root.AppendChild(item);

                XmlElement link = xmlDoc.CreateElement("link");
                link.InnerText = String.Format("http://{0}/Show.aspx?id={1}&cid={2}", "***",articleid, classid);
                item.AppendChild(link);
                

                XmlElement xml_title = xmlDoc.CreateElement("title");
                xml_title.InnerText = title;
                item.AppendChild(xml_title);

                XmlElement pubDate = xmlDoc.CreateElement("pubDate");
                pubDate.InnerText = dateandtime;
                item.AppendChild(pubDate);
            }

            xmlDoc.Save(Server.MapPath("~/sitemap_baidu.xml"));
        }

        private void toGoogleXml(DataRow[] rows)
        {
            XmlDocument xmlDoc = new XmlDocument();
            XmlDeclaration declareation;
            declareation = xmlDoc.CreateXmlDeclaration("1.0", "UTF-8", null);
            xmlDoc.AppendChild(declareation);

            XmlElement xeRoot = xmlDoc.CreateElement("urlset");
            xeRoot.SetAttribute("xmlns", "http://www.google.com/schemas/sitemap/0.84");
            xmlDoc.AppendChild(xeRoot);

            XmlNode root = xmlDoc.SelectSingleNode("urlset");

            XmlElement url = xmlDoc.CreateElement("url");
            root.AppendChild(url);

            XmlElement loc = xmlDoc.CreateElement("loc");
            loc.InnerText = String.Format("http://{0}/", "***");
            url.AppendChild(loc);

            XmlElement lastmod = xmlDoc.CreateElement("lastmod");
            lastmod.InnerText = DateTime.Now.ToString();
            url.AppendChild(lastmod);

            XmlElement changefreq = xmlDoc.CreateElement("changefreq");
            changefreq.InnerText = "always";
            url.AppendChild(changefreq);

            XmlElement priority = xmlDoc.CreateElement("priority");
            priority.InnerText = "1.0" ;
            url.AppendChild(priority);

            foreach (DataRow row in rows)
            {
                string articleid = row["articleid"].ToString();
                string title = row["title"].ToString();
                string classid = row["classid"].ToString();
                string dateandtime = row["dateandtime"].ToString();

                XmlElement xurl = xmlDoc.CreateElement("url");
                root.AppendChild(xurl);

                XmlElement xloc = xmlDoc.CreateElement("loc");
                xloc.InnerText = String.Format("http://{0}/Show.aspx?id={1}&cid={2}", "***", articleid, classid);
                xurl.AppendChild(xloc);

                XmlElement xlastmod = xmlDoc.CreateElement("lastmod");
                xlastmod.InnerText = dateandtime;
                xurl.AppendChild(xlastmod);

                XmlElement xchangefreq = xmlDoc.CreateElement("changefreq");
                xchangefreq.InnerText = "daily";
                xurl.AppendChild(xchangefreq);

                XmlElement xpriority = xmlDoc.CreateElement("priority");
                xpriority.InnerText = "1.0";
                xurl.AppendChild(xpriority);
            }


            xmlDoc.Save(Server.MapPath("~/sitemap.xml"));
        }
    }
}