Realtin.Xdsl 1.3.1

dotnet add package Realtin.Xdsl --version 1.3.1
                    
NuGet\Install-Package Realtin.Xdsl -Version 1.3.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="Realtin.Xdsl" Version="1.3.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Realtin.Xdsl" Version="1.3.1" />
                    
Directory.Packages.props
<PackageReference Include="Realtin.Xdsl" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Realtin.Xdsl --version 1.3.1
                    
#r "nuget: Realtin.Xdsl, 1.3.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.
#:package Realtin.Xdsl@1.3.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Realtin.Xdsl&version=1.3.1
                    
Install as a Cake Addin
#tool nuget:?package=Realtin.Xdsl&version=1.3.1
                    
Install as a Cake Tool

Realtin.Xdsl

A lightweight, high-performance XML-like Domain Specific Language (XDSL) library for .NET.

Features

  • Fast and memory-efficient XDSL document parsing and writing
  • Support for elements, attributes, tags, and comments
  • Resource loading capabilities
  • Streaming support for large documents
  • Indented and non-indented output formats
  • Async operations support
  • Docker integration ready
  • Benchmarking tools included

Project Structure

The solution consists of three main projects:

  • Realtin.Xdsl: Core library containing the base XDSL implementation
  • Realtin.Xdsl.Experimental: Extended features and experimental implementations
  • Realtin.Xdsl.Lab: Benchmarking and testing project for performance analysis

Getting Started

Installation

Add a reference to the Realtin.Xdsl package in your project:

dotnet add package Realtin.Xdsl

Or

<PackageReference Include="Realtin.Xdsl" Version="1.2.0" />

Basic Usage

// Create a new XDSL document
var document = new XdslDocument();

// Create and add elements 
document.CreateElement("Person", person => {
    person.CreateElement("FirstName", x => x.Text = "Java");
    person.CreateElement("LastName", x => x.Text = "Script");
    person.CreateElement("Age", x => x.Text = "30");
});

// Write document to string 
var prettyOutput = document.WriteToString(writeIndented: true);

Console.WriteLine(prettyOutput);

Serialize an Object to Xdsl

using Realtin.Xdsl;
using Realtin.Xdsl.Serialization;

var user = new
{
    Name = "User",
    Email = "user@example.com",
    Age = 20
};

var document = XdslSerializer.Serialize(user);
Console.WriteLine(document.WriteToString(writeIndented: true));

Output:

<User>
  <Name>Realtin</Name>
  <Email>realtin@example.com</Email>
  <Age>20</Age>
</User>

XQL Queries

var usersResult = XqlExpression
    .Compile(@"WHERE X:NAME == ""User"" SELECT")
    .Execute(doc, XqlPermissions.Read);

if (usersResult.TryCast<IEnumerable<XdslElement>>(out var users)) {
    foreach (var user in users) {
        Console.WriteLine(user.Text);
    }
}

Key Components

XdslElement

Base class for all XDSL elements, supporting:

  • Hierarchical node structure
  • Attribute management
  • Resource loading
  • Text content

XdslDocument

Represents an XDSL document with capabilities for:

  • Loading and saving documents
  • Managing document structure
  • Version control
  • Document type specification

XdslTextWriter

Provides efficient writing capabilities with:

  • Indented output support
  • Streaming capabilities
  • StringBuilder integration
  • Performance optimizations

Performance

The library is designed with performance in mind:

  • Aggressive inlining of critical methods
  • Minimal allocations
  • Optional pooling for frequently used objects
  • Optimized string operations

Performance Benchmarks

Xdsl offers industry-leading performance for serialization and deserialization. Benchmarks compared to popular formats:

Serializer Time (ns) Size (Bytes)
Xdsl Custom Serializer 236.1 600
Proto Serializer 774.7 504
Newtonsoft JSON 2,043.5 4,160

Requirements

  • .NET Standard 2.1 or higher
  • C# 13.0 features supported

License

MIT - See LICENSE file for details

Authors

  • Realtin (CodingBoson)
  • BosonWare, Technologies

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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 was computed.  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 was computed.  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.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen 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.
  • .NETStandard 2.1

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.3.1 294 8/5/2025
1.2.0 149 7/12/2025
1.0.1 193 6/29/2025
1.0.0 160 6/22/2025

Added Realtin.Xdsl.xml documentation file.