public void Process(SitemapGenerateArgs args)
        {
            Assert.ArgumentNotNull(args, nameof(args));

            if (!args.IsSiteGroup || args.SitemapSites.Count <= 1)
            {
                return;
            }

            var sitemapindex = new Sitemapindex();

            foreach (var sitemapSite in args.SitemapSites)
            {
                var scheme = sitemapSite.SiteContext.Properties["scheme"] ?? "http";

                var groupUrl = $"{scheme}://{sitemapSite.SiteContext.TargetHostName}";

                var loc = $"{groupUrl}/sitemaps/{ItemUtil.ProposeValidItemName(sitemapSite.SiteContext.Name)}.xml";

                var sitemap = new Sitemap(loc, DateTime.Now);

                sitemapindex.Sitemaps.Add(sitemap);
            }

            Logger.Info($"Generated SiteIndex object for site group: {args.SiteGroupName}");

            var xmlString = sitemapindex.SitemapToXml();

            var indexPath = $"{args.SiteDirectoryAbsolutePath}\\index.xml";

            File.WriteAllText(indexPath, xmlString);
            Logger.Info($"Wrote SiteIndex XML for site group: {args.SiteGroupName}");
        }
        public IEnumerable <string> GetSitemapindexUrls(string sitemapindexXML)
        {
            XmlSerializer serializer = new XmlSerializer(typeof(Sitemapindex));

            var result = new Sitemapindex();

            using (TextReader reader = new StringReader(sitemapindexXML))
            {
                try
                {
                    result = (Sitemapindex)serializer.Deserialize(reader);
                }
                catch (System.InvalidOperationException)
                {
                    throw new Exception("Invalid sitemapindex format");
                }
            }

            return(result.Urls.Select(url => url.Loc));
        }