A lightweight, high-performance XML-like Domain Specific Language (XDSL) library for .NET.
- 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
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
Add a reference to the Realtin.Xdsl package in your project:
dotnet add package Realtin.XdslOr
<PackageReferenceInclude="Realtin.Xdsl"Version="1.2.0" />// 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);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>varusersResult=XqlExpression.Compile(@"WHERE X:NAME == ""User"" SELECT").Execute(doc,XqlPermissions.Read);if(usersResult.TryCast<IEnumerable<XdslElement>>(outvarusers)){foreach(varuserinusers){Console.WriteLine(user.Text);}}Base class for all XDSL elements, supporting:
- Hierarchical node structure
- Attribute management
- Resource loading
- Text content
Represents an XDSL document with capabilities for:
- Loading and saving documents
- Managing document structure
- Version control
- Document type specification
Provides efficient writing capabilities with:
- Indented output support
- Streaming capabilities
- StringBuilder integration
- Performance optimizations
The library is designed with performance in mind:
- Aggressive inlining of critical methods
- Minimal allocations
- Optional pooling for frequently used objects
- Optimized string operations
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 |
- .NET Standard 2.1 or higher
- C# 13.0 features supported
MIT - See LICENSE file for details
- Realtin (CodingBoson)
- BosonWare, Technologies
Contributions are welcome! Please feel free to submit a Pull Request.