BeanSpitter 1.0.0

dotnet add package BeanSpitter --version 1.0.0                
NuGet\Install-Package BeanSpitter -Version 1.0.0                
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="BeanSpitter" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BeanSpitter --version 1.0.0                
#r "nuget: BeanSpitter, 1.0.0"                
#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 BeanSpitter as a Cake Addin
#addin nuget:?package=BeanSpitter&version=1.0.0

// Install BeanSpitter as a Cake Tool
#tool nuget:?package=BeanSpitter&version=1.0.0                

BeanSpitter

A Simple, Stream-Oriented XML Parser for .NET - NuGet: here

This XML Parsing Library aims to simplify parsing operations for files which:

  • Have an associated XML Schema Definition (XSD);
  • Have classes generated from its XSD file (from xsd.exe, for example);
  • You don't want to create the parsing code by hand, going through XElement, dealing with strings and etc., especially for complex XML Schemas.

What does this library offers:

  • It is built over regular XmlReader and System.Xml infrastructure, so no "out of the world" code.
  • It is Multi-Platform: net45 and netstandard2.0
  • Stream-oriented, Memory friendly (around 120 MB of Total Memory Consumption while running tests with over 4GB XML files with Visual Studio), asynchronous XML Validation and Parsing (using Stream and Task);
  • Schema Loading, XML Validation and Parsing methods with overloads for Byte Arrays, Files and Streams;
  • Parsing by type, with header type support (like those XML Files that have Envelope, Header and Payload schemas, e.g. ISO 20022 XML Messages - this library was initially made for these);
  • Async Event-raising for nodes read, errors occurred and when it finishes parsing and validating. Kind of SAX inspired, but it raises POCO-like objects;

Usage and Documentation:

  • Still a work in progress, but you can find code samples in the SAMPLES folder and a very basic usage example can be found here
Caveats:
  • When using .NET Core, you must add a new XmlUrlResolver() to your XmlSchemaSet.XmlResolver property (reference here) or do this.
Other remarks:
  • It has only one dependency, for better testability, which is System.IO.Abstractions;
  • The idea is not to "hog" your ThreadPool: It will set the TaskScheduler to Environment.ProcessorCount * 2 by default. Reference from here.
  • It is modular: Even though the defaults work OK, if you fancy something different, the object constructors from the library get Interfaces for almost everything, so you can replace even the EventRiser implementation if you would like.
Misc
  • It is my first "real" opensource project, so bear with me 😃. Suggestions and contributions are welcome.
  • It is not yet a fully tested solution (you can help to improve that), but it is good enough for what I meant and the current tests cover quite complex scenarios out-of-the-box
  • To contribute, clone it, create a branch, do your stuff (with tests, please 😃) and 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. 
.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 net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  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

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.0.0 670 9/5/2019
1.0.0-beta2 403 9/5/2019
1.0.0-beta1 367 9/5/2019