Beispiel #1
0
        private void GeneateSitemap()
        {
            try
            {
                string sitemap = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
                                 "<urlset xmlns=\"http://www.google.com/schemas/sitemap/0.84\">\n";
                string webBase = this.Project.WebBase;
                if (!webBase.EndsWith("/"))
                {
                    webBase += "/";
                }
                if (!webBase.StartsWith("http://"))
                {
                    webBase += "http://";
                }

                string[] htmlFiles = Directory.GetFiles(Project.WebDirectory);
                foreach (string file in htmlFiles)
                {
                    string lowerFile = file.ToLower();
                    if (lowerFile.EndsWith(".htm") || lowerFile.EndsWith(".html"))
                    {
                        // Add to the sitemap
                        sitemap += "<url>\n<loc>" + webBase + Path.GetFileName(file) + "</loc>\n<lastmod>";
                        DateTime lastmod = File.GetLastWriteTime(file);
                        sitemap += lastmod.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'sszzz") + "</lastmod>\n";
                        sitemap += "<changefreq>" + this.Project.ChangeFrequency + "</changefreq>\n";
                        sitemap += "</url>\n";
                    }
                }
                sitemap += "</urlset>";

                // Store
                string       sitemapFile = Path.Combine(Project.WebDirectory, "sitemap.xml");
                StreamWriter writer      = new StreamWriter(sitemapFile, false, Encoding.UTF8);
                writer.Write(sitemap);
                writer.Close();
                string sitemapZiped = Path.Combine(Project.WebDirectory, "sitemap.xml.gz");
                Zip.CompressFile(sitemapFile, sitemapZiped);
                File.Delete(sitemapFile);
            }
            catch (Exception ex)
            {
                UI.Log("Error generating the sitemap: " + ex.Message, ChmLogLevel.ERROR);
                UI.Log(ex);
            }
        }