Skip to content

Repository files navigation

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

<PackageReferenceInclude="Realtin.Xdsl"Version="1.2.0" />

Basic Usage

// Create a new XDSL documentvardocument=newXdslDocument();// 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 varprettyOutput=document.WriteToString(writeIndented:true);Console.WriteLine(prettyOutput);

Serialize an Object to Xdsl

usingRealtin.Xdsl;usingRealtin.Xdsl.Serialization;varuser=new{Name="User",Email="user@example.com",Age=20};vardocument=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

varusersResult=XqlExpression.Compile(@"WHERE X:NAME == ""User"" SELECT").Execute(doc,XqlPermissions.Read);if(usersResult.TryCast<IEnumerable<XdslElement>>(outvarusers)){foreach(varuserinusers){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:

SerializerTime (ns)Size (Bytes)
Xdsl Custom Serializer236.1600
Proto Serializer774.7504
Newtonsoft JSON2,043.54,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.

About

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

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages