Sidio.Sitemap.Core 2.7.1

Prefix Reserved
dotnet add package Sidio.Sitemap.Core --version 2.7.1                
NuGet\Install-Package Sidio.Sitemap.Core -Version 2.7.1                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sidio.Sitemap.Core" Version="2.7.1" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sidio.Sitemap.Core --version 2.7.1                
#r "nuget: Sidio.Sitemap.Core, 2.7.1"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sidio.Sitemap.Core as a Cake Addin
#addin nuget:?package=Sidio.Sitemap.Core&version=2.7.1

// Install Sidio.Sitemap.Core as a Cake Tool
#tool nuget:?package=Sidio.Sitemap.Core&version=2.7.1                

Sidio.Sitemap.Core

Sidio.Sitemap.Core is a lightweight .NET library for generating sitemaps. It supports sitemap index files and can be used in any .NET application. It is written in C# and is available via NuGet.

build NuGet Version Coverage Status

Installation

Add the package to your project.

Usage

Looking for ASP.NET Core integration, see Sidio.Sitemap.AspNetCore. For Blazor integration, see Sidio.Sitemap.Blazor.

Sitemap

var nodes = new List<SitemapNode> { new ("https://example.com/page.html") };
var sitemap = new Sitemap(nodes);
var service = new SitemapService(new XmlSerializer());
var xmlResult = service.Serialize();

Sitemap index

var sitemapIndexNodes = new List<SitemapIndexNode> { new("https://example.com/sitemap-1.xml") };
var sitemapIndex = new SitemapIndex(sitemapIndexNodes);
var service = new SitemapIndexService(new XmlSerializer());
var xmlResult = service.Serialize();

Dependency injection

// DI setup
services.AddDefaultSitemapServices();

// implementation
public class MyClass()
{
    public MyClass(ISitemapService service)
    {
        var nodes = new List<SitemapNode> { new ("https://example.com/page.html") };
        var sitemap = new Sitemap(nodes);
        var xmlResult = service.Serialize();
    }
}    

Working with relative URLs

public class MyBaseUrlProvider : IBaseUrlProvider
{
    public Uri BaseUrl => new ("https://example.com", UriKind.Absolute);
}

// DI setup
services.AddBaseUrlProvider<MyBaseUrlProvider>();
services.AddDefaultSitemapServices();
// or in one function:
services.AddDefaultSitemapServices<MyBaseUrlProvider>();

// regular setup
var serializer = new XmlSerializer(new MyBaseUrlProvider());
var service = new SitemapService(serializer);

// nodes, relative urls
var nodes = new List<SitemapNode> { new ("page.html") };

Extensions

Image sitemaps

var sitemap = new Sitemap();
sitemap.Add(new SitemapImageNode("https://example.com/page.html", new ImageLocation("https://example.com/image.png")));

Extension documentation on Google Search Central

News sitemaps

var sitemap = new Sitemap();
sitemap.Add(new SitemapNewsNode("https://example.com/page.html", "title", "name", "EN", DateTimeOffset.UtcNow));

Extension documentation on Google Search Central

Video sitemaps

var video = new VideoContent("https://example.com/thumbnail.png", "title", "description", "https://example.com/video.mp4", null);
var sitemap = new Sitemap();
sitemap.Add(new SitemapVideoNode("https://example.com/page.html", video));

Extension documentation on Google Search Central

Stylesheets

XSLT stylesheets for sitemaps and sitemap indexes are supported. The stylesheet can be added to the Sitemap or SitemapIndex object:

var sitemap = new Sitemap(nodes, "my-stylesheet.xslt");

For more information, see Sitemap Style.

Deserialization

It is possible to load existing XML and deserialize it into a sitemap object:

var xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><urlset> ....";
var serializer = services.GetRequiredService<ISitemapSerializer>();
var sitemap = serializer.Deserialize(xml);

Benchmarks XmlSerializer sync/async (Sitemap)


BenchmarkDotNet v0.14.0, Windows 11 (10.0.22631.4460/23H2/2023Update/SunValley3)
AMD Ryzen 7 5800H with Radeon Graphics, 1 CPU, 16 logical and 8 physical cores
.NET SDK 9.0.100
  [Host]   : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2
  .NET 8.0 : .NET 8.0.11 (8.0.1124.51707), X64 RyuJIT AVX2
  .NET 9.0 : .NET 9.0.0 (9.0.24.52809), X64 RyuJIT AVX2

Method Job Runtime NumberOfNodes Mean Error StdDev Ratio RatioSD
Serialize .NET 8.0 .NET 8.0 10 5.153 us 0.0971 us 0.0758 us 1.00 0.02
Serialize .NET 9.0 .NET 9.0 10 4.585 us 0.0894 us 0.0792 us 0.89 0.02
SerializeAsync .NET 8.0 .NET 8.0 10 6.312 us 0.0733 us 0.0650 us 1.00 0.01
SerializeAsync .NET 9.0 .NET 9.0 10 5.482 us 0.0189 us 0.0167 us 0.87 0.01
Serialize .NET 8.0 .NET 8.0 100 41.446 us 0.4271 us 0.3995 us 1.00 0.01
Serialize .NET 9.0 .NET 9.0 100 38.711 us 0.3524 us 0.3124 us 0.93 0.01
SerializeAsync .NET 8.0 .NET 8.0 100 51.229 us 0.4338 us 0.4057 us 1.00 0.01
SerializeAsync .NET 9.0 .NET 9.0 100 46.347 us 0.7401 us 0.6923 us 0.90 0.01
Serialize .NET 8.0 .NET 8.0 40000 23,239.956 us 428.2431 us 400.5788 us 1.00 0.02
Serialize .NET 9.0 .NET 9.0 40000 23,396.317 us 334.0125 us 312.4355 us 1.01 0.02
SerializeAsync .NET 8.0 .NET 8.0 40000 23,490.278 us 251.5840 us 223.0227 us 1.00 0.01
SerializeAsync .NET 9.0 .NET 9.0 40000 23,334.005 us 253.3734 us 237.0057 us 0.99 0.01

References

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Sidio.Sitemap.Core:

Package Downloads
Sidio.Sitemap.AspNetCore

Sidio.Sitemap.AspNetCore is a lightweight .NET library for generating sitemaps and a sitemap index in ASP .NET Core applications.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2.7.1 111 1/20/2025
2.7.0 1,016 11/13/2024
2.6.2 2,153 10/14/2024
2.6.1 669 8/28/2024
2.5.1 190 8/19/2024
2.5.0 464 7/22/2024
2.4.1 114 7/21/2024
2.3.0 438 5/19/2024
2.2.4 144 5/2/2024
2.1.0 336 3/15/2024
2.0.0 340 3/14/2024