יום רביעי, 22 באוקטובר 2014

יצירת SiteMap.xml מתוך DB


לאחר יצירת דף XML בROOT של האתר, הקוד ישאב את שמות הכתבה והתאריך יצירה שלהם מהנתונים בDB (לאחר שיוסיף להם את הכתובת של האתר והסיום aspx)

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Xml;

/// <summary>
/// Summary description for siteMap
/// </summary>
public class siteMap
{
       public siteMap() {}

    public class nodeXmlSiteMap{
        private string _loc = "http://www.mysite.co.il/";
        public string loc { get { return _loc; } set { value = value + ".aspx"; _loc = value; } }
        private string _priority = "1.0";
        public string priority { get {return _priority; } set {_priority = value; } }
        private string _changefreq = "Monthly";
        public string changefreq { get { return _changefreq; } set { _changefreq = value; } }
        private string _lastmod = String.Format("{0:yyyy-MM-dd}", DateTime.Now);
        public string lastmod {get {return _lastmod;} set { _lastmod = value; }
        }
    }

    public void createFileSiteMap() {

        XmlTextWriter writer = new XmlTextWriter(HttpRuntime.AppDomainAppPath + "sitemap.xml", System.Text.Encoding.UTF8);
            writer.WriteStartDocument(true);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 4;
            writer.WriteStartElement("urlset", "http://www.sitemaps.org/schemas/sitemap/0.9 ");

            writer = getDataFromDB(writer);
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }

    private XmlTextWriter getDataFromDB(XmlTextWriter writer)
    {
       
        SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Con"].ConnectionString);
        SqlCommand cmd;
       
        try
        {
             cmd = new SqlCommand("SELECT UrlArticle,DateArticle FROM Article");
             cmd.Connection = con;
             cmd.CommandType = System.Data.CommandType.Text;
          
             con.Open();
             SqlDataReader dr = cmd.ExecuteReader();

                while (dr.Read())
                {
                    nodeXmlSiteMap url = new nodeXmlSiteMap();
                    url.loc = url.loc + dr[0].ToString();
                   // url.priority ="1.0";
                   //url.changefreq = "Monthly";
                    DateTime _myDate = new DateTime();
                        _myDate = (DateTime)dr[1];
                        url.lastmod = String.Format("{0:yyyy-MM-dd}", _myDate);
                    createNode(url, writer);
                }
            con.Close();

        }
        catch (Exception ex)
        {

        }
        return writer;
    }

    private void createNode(nodeXmlSiteMap url, XmlTextWriter writer)
    {
        writer.WriteStartElement("url");
            writer.WriteStartElement("loc");
            writer.WriteString(url.loc);
            writer.WriteEndElement();
            writer.WriteStartElement("lastmod");
            writer.WriteString(url.lastmod);
            writer.WriteEndElement();
            writer.WriteStartElement("changefreq");
            writer.WriteString(url.changefreq);
            writer.WriteEndElement();
            writer.WriteStartElement("priority");
            writer.WriteString(url.priority);
            writer.WriteEndElement();
        writer.WriteEndElement();
    }          

}

אין תגובות:

הוסף רשומת תגובה