static void Main(string[] args)
        {
            var siteMap = new SiteMap();
            var myBase = "http://simongoldstone.com";

            siteMap.Add(new SiteMapEntry { ChangeFreq = ChangeFrequency.Daily, LastMod = DateTime.Now, Loc = myBase + "/", Priority = 0.9 }); // home page
            siteMap.Add(new SiteMapEntry { ChangeFreq = ChangeFrequency.Daily, LastMod = DateTime.Now, Loc = myBase + "/contact", Priority = 0.3 }); // contact page

            ISiteMapRenderer renderer;

            Console.WriteLine("XML OUTPUT:");
            renderer = new SiteMapXmlRenderer();
            Console.WriteLine(renderer.Render(siteMap, 1000, 1));

            Console.WriteLine("\r\n\r\nHTML OUTPUT:");
            renderer = new SiteMapHtmlTableRenderer();
            Console.WriteLine(renderer.Render(siteMap, 1000, 1));

            Console.WriteLine("\r\n\r\nSITE MAP INDEX OUTPUT:");
            var index = new SiteMapIndexRenderer(myBase);
            Console.WriteLine(index.Render(siteMap));

            Console.WriteLine("\r\n\r\nFinished. Press Enter.");
            Console.ReadLine();
        }
        public string Render(SiteMap siteMap, int pageSize, int page)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("<p>{0} entries</p>\r\n", siteMap.Entries.Count());
            stringBuilder.AppendLine("<table><thead><tr><th>Index</th><th>LastMod</th><th>ChangeFreq</th><th>Priority</th><th>Loc</th></tr></thead><tbody>");

            int counter = 0;
            foreach (var entry in siteMap.Entries.Skip((page - 1) * pageSize).Take(pageSize))
            {
                stringBuilder.AppendFormat("<tr><td>{0}</td><td>{1}</td><td>{2}</td><td>{3}</td><td><a href='{4}' target='_blank'>{4}</a></td></tr>\r\n",
                    ++counter, entry.LastMod.ToShortDateString(), entry.ChangeFreq, entry.Priority, entry.Loc);
            }

            stringBuilder.AppendLine("</tbody></table>");

            return stringBuilder.ToString();
        }
        public string Render(SiteMap siteMap, int pageSize, int page)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(@"<?xml version=""1.0"" encoding=""utf-8""?>");
            stringBuilder.AppendLine(@"<urlset xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">");

            foreach (var entry in siteMap.Entries.Skip((page - 1) * pageSize).Take(pageSize))
            {
                stringBuilder.AppendLine("<url>");
                stringBuilder.AppendFormat("  <loc>{0}</loc>", entry.Loc.ToLowerInvariant());
                stringBuilder.AppendFormat("  <lastmod>{0}</lastmod>", entry.LastMod.ToString("yyyy-MM-dd"));
                stringBuilder.AppendFormat("  <changefreq>{0}</changefreq>", entry.ChangeFreq.ToString().ToLower());
                stringBuilder.AppendFormat("  <priority>{0}</priority>", entry.Priority.ToString("N1"));
                stringBuilder.AppendLine("</url>");
            }

            stringBuilder.AppendLine("</urlset>");

            return stringBuilder.ToString();
        }
        public string Render(SiteMap siteMap)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine(@"<?xml version=""1.0"" encoding=""UTF-8""?>");
            stringBuilder.AppendLine(@"<sitemapindex xmlns=""http://www.sitemaps.org/schemas/sitemap/0.9"">");

            int maxPages = (siteMap.Entries.Count() / PAGE_SIZE) + 1;

            for (int page = 1; page <= maxPages; page++)
            {
                var loc = String.Format("{0}sitemap/sitemap-{1}", _baseRoute, page);

                stringBuilder.AppendLine(@"<sitemap>");
                stringBuilder.AppendFormat(@"  <loc>{0}</loc>", loc);
                stringBuilder.AppendFormat(@"  <lastmod>{0}</lastmod>", DateTime.Now.ToString("yyyy-MM-dd"));
                stringBuilder.AppendLine(@"</sitemap>");
            }

            stringBuilder.AppendLine(@"</sitemapindex>");

            return stringBuilder.ToString();
        }