public void Test_Read_Write_Equals_From_Absolute_Url() { string absoluteUrl = "https://www.dr.dk/sitemap.xml"; string s = string.Empty; Urlset urlset = null; using (var httpLoader = new HttpLoader(new Url(absoluteUrl))) { try { urlset = httpLoader.Urlsets.FirstOrDefault(); if (urlset == null) { Assert.Fail($"urlset expected from {urlset} is null"); } s = Composer.ComposeUrlset(httpLoader.Urlsets.First()); } catch (Exception ex) { Assert.Fail($"error {ex.Message}"); } } var loader = new Loader(); loader.Add(urlset); Assert.IsTrue(loader.Urlsets.First().Entities.Count == urlset.Entities.Count); }
public Urlset SitemapToObject(string path) { Urlset Data = new Urlset(); XmlSerializer serializer = new XmlSerializer(typeof(Urlset)); StreamReader reader = new StreamReader(path); Data = (Urlset)serializer.Deserialize(reader); reader.Close(); return(Data); }
private static void digikala_SitemapToObject(string path) { //string path = @"C:\Digikala\100125842.xml"; using (var sitemap = new SitemapHelper()) { Urlset list = sitemap.SitemapToObject(path); var _test = list.urlset.ToList(); Console.WriteLine("Sitemap Count: " + _test.Count()); } }
public void Process(SitemapBuildSitemapXmlArgs args) { Assert.ArgumentNotNull(args, nameof(args)); var urlSet = new Urlset(); var filteredSitemapItems = args.SitemapItems; if (args.IsGroup) { filteredSitemapItems = filteredSitemapItems.Where(sitemapItem => sitemapItem.SiteContext.Name == args.SitemapSiteArgs.SiteContext.Name).ToList(); } foreach (var sitemapItem in filteredSitemapItems) { var path = sitemapItem.Path; // TODO: optimize this loop var alternates = args.SitemapItems.Where(item => item.Path == path); // Cycle through once to get all links for itemAlternates // // e.g. // // <xhtml:link rel="alternate" hreflang="en" href="http://www.site.com/" /> // <xhtml:link rel="alternate" hreflang="fr-ca" href="http://www.site.com/fr" /> // var links = BuildAlternates(alternates, args.SitemapSiteArgs); // output individual loc and lastmod time per https://support.google.com/webmasters/answer/2620865?hl=en // // e.g. // //<url> // <loc>http://www.site.com/</loc> // <lastmod>2018-01-16</lastmod> // <xhtml:link rel="alternate" hreflang="en" href="http://www.site.com/" /> // <xhtml:link rel="alternate" hreflang="fr-ca" href="http://www.site.com/fr" /> //</url> //<url> // <loc>http://www.site.com/fr</loc> // <lastmod>2018-03-26</lastmod > // <xhtml:link rel="alternate" hreflang="en" href="http://www.site.com" /> // <xhtml:link rel="alternate" hreflang="fr-ca" href="http://www.site.com/fr" /> //</url> // var url = BuildUrl(links, sitemapItem, args.SitemapSiteArgs.SiteContext.SiteInfo.EnableItemLanguageFallback); urlSet.Url.Add(url); } args.SitemapSiteArgs.XmlObjects = urlSet; }
static void Main(string[] args) { var data = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset><url><loc>http://www.myurl.de/</loc><lastmod>2012-06-25T17:10:30+00:00</lastmod><changefreq>always</changefreq></url></urlset>"; var ser = new System.Xml.Serialization.XmlSerializer(typeof(Urlset)); Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(data)); Urlset reply = (Urlset)ser.Deserialize(stream); reply.Dump(); }
public static Urlset getUrls(string xml) { Urlset reply = new Urlset(); string xmlClean = xml.Replace("<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n", "<urlset>"); var ser = new System.Xml.Serialization.XmlSerializer(typeof(Urlset)); //Replace("</urlset>", "").Trim(); Stream stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlClean)); reply = (Urlset)ser.Deserialize(stream); return(reply); }
public async Task <Urlset> GetUrlsetAsync(string url) { return(await _cacheManager.GetCache(SitemapCacheNames.CacheSitemap) .GetAsync("Admin", async k => { var articleIds = await _articleRepository .GetAll() .OrderByDescending(p => p.CreationTime) .Select(p => p.Id) .ToListAsync(); var typeIds = await _articleTypeRepository .GetAll() .Select(p => p.Id) .ToListAsync(); var tagNames = await _articleTagRepository .GetAll() .Select(p => p.Name) .ToListAsync(); Urlset urlset = new Urlset(); urlset.Urls.Add(new UrlDto() { loc = url, lastmod = DateTime.Now.ToShortDateString(), changefreq = "weekly", priority = "1.00" }); foreach (var item in typeIds) { urlset.Urls.Add(new UrlDto() { loc = $"{url}/Article/Type_{item}.html", changefreq = "weekly", priority = "0.80" }); } foreach (var item in articleIds) { urlset.Urls.Add(new UrlDto() { loc = $"{url}/Article/Details_{item}.html", changefreq = "daily", priority = "0.90" }); } foreach (var item in tagNames) { urlset.Urls.Add(new UrlDto() { loc = $"{url}/Article/Tag_{item}.html", changefreq = "daily", priority = "0.70" }); } return urlset; }) as Urlset); }
public async Task sitemap() { Response.ContentType = "text/xml"; var serializer = new XmlSerializer(typeof(Urlset)); var set = new Urlset(); var data = await GetTiles(); var page = 0; set.Url = data.Split(this.setting.AmountPerPage).Select(a => new Url() { Changefreq = "daily", Lastmod = a.Select(b => b.PublishedDate).Max().ToString(), Loc = Url.Action("Index", "Home", new { page = page++ }, this.Request.Scheme), Priority = "1" }).ToList(); serializer.Serialize(Response.Body, set); }
public IEnumerable <string> GetSitemapUrls(string sitemapXML) { XmlSerializer serializer = new XmlSerializer(typeof(Urlset)); var result = new Urlset(); using (TextReader reader = new StringReader(sitemapXML)) { try { result = (Urlset)serializer.Deserialize(reader); } catch (System.InvalidOperationException) { throw new Exception("Invalid sitemap format"); } } return(result.Urls.Select(url => url.Loc)); }
public override void Process(HttpRequestArgs args) { //This check will verify if the physical path of the request exists or not. if (!System.IO.File.Exists(args.HttpContext.Request.PhysicalPath) && !System.IO.Directory.Exists(args.HttpContext.Request.PhysicalPath)) { Assert.ArgumentNotNull(args, "args"); //Check if the request is of sitemap.xml then only allow the request to serve sitemap.xml if (args.Url == null || !args.Url.FilePath.ToLower().EndsWith("sitemap.xml")) { return; } try { // Homepage of the Website. // Start path will give homepage including Multisite. var homepage = Context.Database.GetItem(args.StartPath); var ser = new XmlSerializer(typeof(Urlset)); var urlSet = new Urlset(); //Create node of Homepage in Sitemap. var tmpurlset = new List <Url>(); var config = AppendLanguage(); if (!ExcludeItemFromSitemap(homepage)) { tmpurlset.Add(new Url { Loc = GetAbsoluteLink(LinkManager.GetItemUrl(homepage, new UrlOptions() { LanguageEmbedding = (config == 2 ? LanguageEmbedding.Always : (config == 1 ? LanguageEmbedding.AsNeeded : LanguageEmbedding.Never)) })), Lastmod = homepage.Statistics.Updated.ToString("yyyy-MM-dd hh:mm:ss") }); } // Get all decendants of Homepage to create full Sitemap. var childrens = homepage.Axes.GetDescendants(); //Remove the items whose templateid is in exclude list var finalcollection = childrens.Where(x => !ExcludeItemFromSitemap(x)).ToList(); tmpurlset.AddRange(finalcollection.Select(childItem => new Url { Loc = GetAbsoluteLink(LinkManager.GetItemUrl(childItem, new UrlOptions() { LanguageEmbedding = (config == 2 ? LanguageEmbedding.Always : (config == 1 ? LanguageEmbedding.AsNeeded : LanguageEmbedding.Never)) })), Lastmod = childItem.Statistics.Updated.ToString("yyyy-MM-dd hh:mm:ss") })); // Populate created collection to right object urlSet.Url = tmpurlset; //Write XML Response for Sitemap. var response = HttpContext.Current.Response; response.AddHeader("Content-Type", "text/xml"); ser.Serialize(response.OutputStream, urlSet); HttpContext.Current.Response.End(); //Response Ends Here } catch (Exception ex) { Log.Error("Error - Sitemap.xml.", ex, this); } } }
public void Add(Urlset o) => Urlsets.Add(o);
public static string ComposeUrlset(Urlset o) => Compose(o);
public static void GenerateSiteMap(string rootUrl) { Global.GlobalList = new List <HREFLink>(); _rootUrl = rootUrl; GetLinks((new HREFLink[] { new HREFLink() { link = _rootUrl, Processed = false } }).ToList()); Urlset siteMapDoc = new Urlset(); var urlEntry = new List <UrlsetUrl>(); Global.GlobalList.OrderBy(l => l.link.Length); if (Global._generateUrlTxtFile) { foreach (var hrefLink in Global.GlobalList) { UrlsetUrl entry = new UrlsetUrl(); entry.changefreq = ConfigurationManager.AppSettings["changeFrequence"]; if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["priority"])) { entry.priority = decimal.Parse(ConfigurationManager.AppSettings["priority"]); } else { entry.priority = 1; } if (!string.IsNullOrEmpty(ConfigurationManager.AppSettings["lastModification"])) { entry.lastmod = DateTime.Parse(ConfigurationManager.AppSettings["lastModification"]); } else { entry.lastmod = DateTime.Now; } entry.loc = hrefLink.link; urlEntry.Add(entry); System.IO.File.AppendAllText(string.Format("{0}links.txt", ConfigurationManager.AppSettings["linksOutputFolder"]), hrefLink.link + Environment.NewLine); } } if (Global._generateSiteMap) { siteMapDoc.url = urlEntry.ToArray(); XmlSerializer serializer = new XmlSerializer(typeof(Urlset)); using (StreamWriter writer = new StreamWriter(string.Format("{0}sitemap.xml", ConfigurationManager.AppSettings["siteMapOutputFolder"]))) { serializer.Serialize(writer, siteMapDoc); } } }
public override void Process(HttpRequestArgs args) { //This check will verify if the physical path of the request exists or not. if (!System.IO.File.Exists(args.HttpContext.Request.PhysicalPath) && !System.IO.Directory.Exists(args.HttpContext.Request.PhysicalPath)) { Assert.ArgumentNotNull(args, "args"); //Check if the request is of sitemap.xml then only allow the request to serve sitemap.xml if (args.Url == null || !args.Url.FilePath.ToLower().EndsWith("sitemap.xml")) { return; } if (args.Url.FilePath.ToLower().Equals("/sitemap.xml")) { //Write XML Response for Sitemap. var response = HttpContext.Current.Response; try { // Homepage of the Website. // Start path will give homepage including Multisite. var homepage = Sitecore.Context.Database.GetItem(args.StartPath); var ser = new XmlSerializer(typeof(Urlset)); var urlSet = new Urlset(); //Create node of Homepage in Sitemap. var tmpurlset = new List <Url>(); var config = AppendLanguage(); tmpurlset.Add(new Url { Loc = GetAbsoluteLink(LinkManager.GetItemUrl(homepage, new UrlOptions() { LanguageEmbedding = (config == 2 ? LanguageEmbedding.Always : (config == 1 ? LanguageEmbedding.AsNeeded : LanguageEmbedding.Never)) })), Lastmod = homepage.Statistics.Updated.ToString("yyyy-MM-dd"), Changefrequency = homepage.Fields["ChangeFrequency"] != null ? homepage.Fields["Changefrequency"].ToEnum <SitemapChangeFrequency>() : SitemapChangeFrequency.Weekly, Priority = this.GetPriority(homepage) }); var sitemapPages = GetAllSitePageItems(homepage, Sitecore.Context.Database); if (sitemapPages != null) { { tmpurlset.AddRange(sitemapPages.Select(childItem => new Url { Loc = GetAbsoluteLink(LinkManager.GetItemUrl(childItem, new UrlOptions() { LanguageEmbedding = (config == 2 ? LanguageEmbedding.Always : (config == 1 ? LanguageEmbedding.AsNeeded : LanguageEmbedding.Never)) })), Lastmod = childItem.Statistics.Updated.ToString("yyyy-MM-dd"), Changefrequency = childItem.Fields["ChangeFrequency"] != null ? childItem.Fields["Changefrequency"].ToEnum <SitemapChangeFrequency>() : SitemapChangeFrequency.Weekly, Priority = this.GetPriority(childItem) })); } tmpurlset.RemoveAll(x => x.Changefrequency == SitemapChangeFrequency.DoNotInclude); //tmpurlset.Sort(); } urlSet.Urls = tmpurlset; //Sort the List Alphabetically urlSet.Urls = urlSet.Urls.OrderBy(k => k.Loc).ToList(); response.AddHeader("Content-Type", "text/xml"); ser.Serialize(response.OutputStream, urlSet); } catch (Exception ex) { Log.Error("Error - Sitemap.xml." + ex.Message + " - " + ex.StackTrace, ex, this); } HttpContext.Current.Response.Flush(); // Sends all currently buffered output to the client. HttpContext.Current.Response.SuppressContent = true; // Gets or sets a value indicating whether to send HTTP content to the client. HttpContext.Current.ApplicationInstance.CompleteRequest(); // Causes ASP.NET to bypass //Response Ends Here } } }