Realtin.Xdsl
1.3.1
dotnet add package Realtin.Xdsl --version 1.3.1
NuGet\Install-Package Realtin.Xdsl -Version 1.3.1
<PackageReference Include="Realtin.Xdsl" Version="1.3.1" />
<PackageVersion Include="Realtin.Xdsl" Version="1.3.1" />
<PackageReference Include="Realtin.Xdsl" />
paket add Realtin.Xdsl --version 1.3.1
#r "nuget: Realtin.Xdsl, 1.3.1"
#:package Realtin.Xdsl@1.3.1
#addin nuget:?package=Realtin.Xdsl&version=1.3.1
#tool nuget:?package=Realtin.Xdsl&version=1.3.1
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 | Versions 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. |
-
.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.
Added Realtin.Xdsl.xml documentation file.