Here is one my example on how to create basic
sitemap using
serialization
XML should look like:
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd" xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/</loc>
<lastmod>2005-01-01</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
The model:
using System.Collections.Generic;
using System.Xml.Schema;
using System.Xml.Serialization;
namespace SiteMapXmlCreation
{
public class Model
{
[XmlRoot("urlset")]
public class Urlset
{
[XmlAttribute("schemaLocation", Namespace = XmlSchema.InstanceNamespace)]
public string SchemaLocation { get; set; }
[XmlElement(ElementName = "url")] public List<url> Url { get; set; }
}
public class url
{
[XmlElement(ElementName = "loc")] public string Loc { get; set; }
[XmlElement(ElementName = "lastmod")] public string Lastmod { get; set; }
[XmlElement(ElementName = "changefreq")] public string Changefreq { get; set; }
[XmlElement(ElementName = "priority")] public string Priority { get; set; }
}
}
}
The Program:
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
namespace SiteMapXmlCreation
{
class Program
{
static void Main(string[] args)
{
Model.Urlset serializedUrlset = new Model.Urlset
{
Url = new List<Model.url> {
new() {
Changefreq = "monthly"
, Lastmod = "2005-01-01"
, Loc = "http://www.example.com/"
, Priority = "0.8"
}
}
, SchemaLocation = "http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
};
TextWriter txtWriter = new StreamWriter(Path.ChangeExtension(System.Reflection.Assembly.GetEntryAssembly().Location, ".xml"));
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(string.Empty, "http://www.sitemaps.org/schemas/sitemap/0.9");
ns.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
ns.Add("xhtml", "http://www.w3.org/1999/xhtml");
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Model.Urlset), "http://www.sitemaps.org/schemas/sitemap/0.9");
xmlSerializer.Serialize(txtWriter, serializedUrlset, ns);
txtWriter.Close();
}
}
}
Example download from
here.